1、sqoop 的通用参数
2、import 的参数
3、第一个同步案例:简单同步
sqoop import --connect jdbc:oracle:thin:@ip:1521/服务名 --username 用户名 --password 密码 --table F_L_C_PROJECT_PARAM --num-mappers 1 --fields-terminated-by "|" --hive-import --hive-table wxwy.f_l_c_project_param --hive-overwrite --hive-drop-import-delims
--connect jdbc:oracle:thin:@ip:1521/服务名 --username 用户名 --password 密码 连接的Oracle的连接串 (Oracle数据同步到hive) table F_L_C_PROJECT_PARAM 是Oracle的表名, --num-mappers 1 使用1一个map任务并行导入数据 --fields-terminated-by "|" 生成的HDFS文件字段间的以|为分隔符 --hive-table wxwy.f_l_c_project_param 入库目标 --hive-overwrite 对目标表的数据进行覆盖 --hive-drop-import-delims 将数据导入到hive时,去掉其中的\n,\r,\001等特殊字符
对应的建表语句为
CREATE TABLE wxwy.F_L_C_PROJECT_PARAM
(
UNIQUE_KEY STRING,
CITY_NAME STRING,
COMPANY_ID DOUBLE
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
WITH SERDEPROPERTIES ('field.delim'='|', 'serialization.format'='|')
TBLPROPERTIES ('serialization.null.format'='')
4、第二个案例:同步到分区表
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=20220224
--connect jdbc:oracle:thin:@ip:1521/服务名 --username 用户名 --password 密码 连接的Oracle的连接串 (Oracle数据同步到hive) table LTE_CELL_HIGHTRAFFIC_PRE 是Oracle的表名, --num-mappers 1 使用1一个map任务并行导入数据 --fields-terminated-by "&" 生成的HDFS文件字段间的以&为分隔符 --hive-table wxwy.lte_cell_hightraffic_pre 目标表 --target-dir /user/hive/warehouse/wxwy.db/lte_cell_hightraffic_pre/partitionday=20220224 指定分区表的入库路径
对应的建表语句为
CREATE TABLE wxwy.lte_cell_hightraffic_pre
(
dn STRING,
sctpassoc_uk STRING,
sctpassoc_name STRING,
managedelement_uk STRING,
sig_nbrsctpunavailable DOUBLE,
start_time STRING,
end_time STRING,
rmuid STRING
)
PARTITIONED BY
(
partitionday STRING )
ROW FORMAT DELIMITED FIELDS TERMINATED BY '&'
WITH SERDEPROPERTIES ('field.delim'='&', 'serialization.format'='&')
TBLPROPERTIES ('serialization.null.format'='')
5、注意事项
注意1:源表的表名大写,目标表的表名小写。
注意2:建表时的分割符需要与文件分隔符保持一致。
注意3:如果需要修改表的分隔符,你直接把原先的表drop 掉重建是不起作用的,发现还是第一次建表时的分隔符。此时需要将HDFS 表名所在的目录删除,再重新建表,分隔符才会被真正修改过来。
注意4:sqoop import 后如果查询不到数据,首先查看HDFS文件有没有,hdfs hdfs -ls /user/hive/warehouse/wxwy.db/lte_cell_hightraffic_pre 若lte_cell_hightraffic_pre下面没有文件,说明没有同步成功,核查问题并重新同步。若有文件,分区表还需要添加分区才能查到
alter table lte_cell_hightraffic_pre add partition(partitionday='20220224') location '/user/hive/warehouse/wxwy.db/lte_cell_hightraffic_pre/partitionday=20220224
|