赞
踩
1.1 不是分区表,覆盖数据
sqoop import --connect jdbc:oracle:thin:@ip:1521/服务名--username 用户名--password 密码 --table LTE_CELL_HIGHTRAFFIC_PRE --num-mappers 1 --fields-terminated-by "|" --hive-import --hive-table wxwy.lte_cell_hightraffic_pre --hive-overwrite --hive-drop-import-delims
1.2 分区表同步
sqoop import --connect jdbc:oracle:thin:@ip:1521/服务名--username 用户名--password 密码--table LTE_CELL_HIGHTRAFFIC_PRE --num-mappers 1 --fields-terminated-by "|" --hive-import --hive-table wxwy.lte_cell_hightraffic_pre --target-dir /user/hive/warehouse/wxwy.db/lte_cell_hightraffic_pre/partitionday=20220213
同步完后会发现无法查询出数据,此时需要标记表的分区信息
alter table LTE_CELL_HIGHTRAFFIC_PRE add partition(partitionday='20220213') location '/user/hive/warehouse/wxwy.db/lte_cell_hightraffic_pre/partitionday=20220213'
数据验证
2、Oracle同步到hive
sqoop export \
--connect jdbc:oracle:thin:@ip:1521/服务名--username 用户名 --password 密码\
--table F_L_C_EUTRANCELLTDD_H \
--columns \
START_TIME,COLUMN1,COLUMN2,COLUMN3,EUTRANCELLTDD_UK ,COLUMN4,\
COLUMN5,....COLUMNN \
--fields-terminated-by "|" --update-key START_TIME,EUTRANCELLTDD_UK \
--update-mode allowinsert --export-dir \
/user/hive/warehouse/wxwy.db/f_l_c_eutrancelltdd_h/partitionday="20220213"/partitionhour="2022021310" \
--num-mappers 8 --batch --input-null-string '\\N' --input-null-non-string '\\N'\
为实现定时同步数据,定时脚本的配置信息
partitionday="$CustFunc:getTime(yyyyMMdd,-H2,partitionday)$"
partitionhour="$CustFunc:getTime(yyyyMMddHH,-H2,start_time)$"
注意:
–table F_L_C_EUTRANCELLTDD_H \ 表名大写
–fields-terminated-by “|” --update-key START_TIME,EUTRANCELLTDD_UK \ START_TIME,EUTRANCELLTDD_UK 为Oracle表中约束字段
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。