sqoop,将oracle数据传递到hive,可以直接将表数据覆盖传递,也可以按select传递,这里我用的是select查询的
脚本如下:
1、创建分区表,按c1分区
CREATE TABLE `xx.cc`( `c1` string) PARTITIONED BY(`c2` string);
2、通过sqoop将数据导入临时表中
sqoop import -D oraoop.jdbc.url.verbatim=true --hive-import --hive-overwrite --connect jdbc:oracle:thin:@ip:port:实例名 --username xx_name --password xx_password --query "select c1,c2 from table_name where c1=1 and \$CONDITIONS" \--hive-database hive_database_name --hive-table cc_temp --target-dir /user/hive/warehouse/xx.db/cc_temp_target --delete-target-dir --num-mappers 1 --fetch-size 5000 --hive-drop-import-delims --null-string ‘\\N‘ --null-non-string ‘\\N‘
sqoop说明:
3、将临时表,导入分区表
set hive.exec.dynamic.partition.mode=nonstrict
insert overwrite table xx.cc partition(c1) select * from xx.cc_temp;