我在oracle中有一个表(表名为trcus),其中包含客户的详细信息,并根据年份和月份进行分区。oracle中的分区名称:period\u jan\u 13、period\u feb\u 13、period\u jan\u 14、period\u feb\u 14等现在我想直接使用sqoop将这个表的数据导入到配置单元中。sqoop作业应该创建一个hive表,根据oracle表分区动态创建分区,然后将数据导入hive;进入各自的分区。如何使用sqoop实现这一点?
shstlldc1#
不幸的是,它不能用sqoop实现。然而,有一种方法我想你可能不知道。在配置单元中创建不带任何分区的表。设置动态分区模式 SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict; 将数据导入未使用sqoop分区的配置单元表 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语句中覆盖期间,请确保最后提到要与之分区的列。配置单元版本:配置单元1.1.0-cdh5.13.1
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;
1条答案
按热度按时间shstlldc1#
不幸的是,它不能用sqoop实现。然而,有一种方法我想你可能不知道。
在配置单元中创建不带任何分区的表。
设置动态分区模式
SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict;
将数据导入未使用sqoop分区的配置单元表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语句中覆盖期间,请确保最后提到要与之分区的列。配置单元版本:配置单元1.1.0-cdh5.13.1