我在oracle中有一个表(表名是TRCUS),其中包含客户的详细信息,根据年份和月份进行分区。 Oracle中的分区名称:PERIOD_JAN_13,PERIOD_FEB_13,PERIOD_JAN_14,PERIOD_FEB_14等
现在我想直接使用SQOOP将此表的数据导入HIVE。
Sqoop作业应该创建一个hive表,根据oracle表分区动态创建分区,然后将数据导入hive;进入各自的分区。
如何使用SQOOP实现这一目标?
不幸的是,使用Sqoop无法实现。但是,我猜你可能不知道有一种方法。
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
sqoop import --connect "jdbc:mysql://quickstart.cloudera:3306/database1" --username root --password cloudera --query 'SELECT DISTINCT id, count from test WHERE $CONDITIONS' --target-dir /user/hive/warehouse/ --hive-table pd_withoutpartition --hive-database database1 --hive-import --hive-overwrite -m 1 --direct
INSERT OVERWRITE TABLE pd_partition partition(name) SELECT id, count, name from pd_withoutpartition;
注意:确保在select语句中覆盖期间最后提到要分区的列。
Hive版本:Hive 1.1.0-cdh5.13.1