您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

sqoop oracle到hive,动态分区一次操作记录

bubuko 2022/1/25 20:02:18 其他 字数 3109 阅读 624 来源 http://www.bubuko.com/infolist-5-1.html

sqoop,将oracle数据传递到hive,可以直接将表数据覆盖传递,也可以按select传递,这里我用的是select查询的 脚本如下: 1、创建分区表,按c1分区 CREATE TABLE `xx.cc`( `c1` string) PARTITIONED BY(`c2` string); 2 ...

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说明:

  • query里面,必须有where条件,同时必须添加 \$CONDITIONS, \$CONDITIONS在执行时会自动替换位 (1= 0),但是不影响查询
  • target-dir 对应的目录,需要当前用户有操作权限,同时,target-dir对应的目录,不可存在,或者对应即将生成的表文件;原因如下
    • target-dir是sqoop将oracle导入数据生成的临时文件(是文件,不是目录),如果已存在,则会报错
    • sqoop将oracle导入到hive后,会将target-dir删除,如果target-dir对应的是即将生成的表文件,则数据会删除

3、将临时表,导入分区表

set hive.exec.dynamic.partition.mode=nonstrict
insert overwrite table xx.cc partition(c1) select * from xx.cc_temp;

 

sqoop oracle到hive,动态分区一次操作记录

原文:https://www.cnblogs.com/jaxlove-it/p/12581141.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶