2014-10-09 131 views
0

我有一个oracle表,它有80个列和id分区在状态列上。我的要求是创建一个具有相似的Oracle表格模式并按状态分区的配置表格。Sqoop - 基于oracle分区表架构创建空的hive分区表

我尝试使用sqoop -create-hive-table选项。但不断收到错误

错误sqoop.Sqoop:出现异常运行Sqoop:java.lang.IllegalArgumentException:分区键状态不能是要导入的列。

我知道在Hive中,分区列不应该在表定义中,但是我该如何解决该问题?

我不想手动编写create table命令,因为我有50个这样的表导入并且想使用sqoop。

任何建议或想法?

谢谢

回答

0

这是一个转身。 以下是我休耕的步骤:

  1. 在Oracle上运行查询以获取表的模式并将其存储到文件中。
  2. 将该文件移至Hadoop
  3. 在Hadoop上创建一个构建HQL文件的shell脚本。
  4. 该hql文件包含“Hive create table statement with columns”。为此我们可以使用上面的文件(将Oracle模式文件复制到hadoop)。
  5. 对于这个脚本来运行你只需要传递Hive数据库名称,表名称,分区列名称,路径等等。取决于你的自定义级别。在这个shell脚本的末尾添加“hive -f HQL filename” 。
  6. 如果一切准备就绪,每个表格创建只需几分钟。
+0

是的,我已经在做类似的事情了。我将表名称传递给Oracle,并通过查询sys表来构建模式 – user3646519 2015-05-28 16:36:06