Sqoop - 根据oracle分区表的模式创建空的hive分区表

时间:2014-10-09 00:55:22

标签: oracle hive sqoop partition

我有一个oracle表,它有80列,id在状态列上分区。我的要求是创建一个具有类似oracle表模式的hive表,并在state上进行分区。

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

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

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

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

有任何建议或想法吗?

由于

1 个答案:

答案 0 :(得分:0)

这有转机。 以下是我休闲的程序:

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