Sqoop job(80张表的增量同步方案,Sqoop Job 使用 )
  TEZNKK3IfmPf 2023年11月12日 27 0

一、需求和方案总述

  • 需求:将MySQL 的83张表先全量 导入 Hive 数仓,然后增量的导入新增的数据到 Hive 数仓  ods 层。
  • 解决方案:创建临时表,将每张表的信息插入到临时表,将 MySQL 临时表信息导出到本地,然后创建 83 个Sqoop job, 最后执行 Sqoop job就可以实现 83 张表的增量导入,前提就是83 张表中都有 时间字段,Sqoop 监控这个时间字段就可以。

二、Sqoop Job 

1. Sqoop job 使用示例

1.查询 job 列表

[root@hdp301 ~]# sqoop job --list

2.删除 job

[root@hdp301 ~]# sqoop job --delete kangll

3.创建测试 job

sqoop job --create kangll -- import --connect jdbc:mysql://192.168.2.226:3306/yx \
--table stat_url_count \
--username root \
--password winner@001 -m 1 \
--hive-import \
--hive-table dwd_url_count \
--external-table-dir /yax/dwd/sfyp_test.db/dwd_url_count \
--incremental append \
--check-column last_timestamp \
--last-value '2015-11-30 16:59:43.1' \
--fields-terminated-by "\001"

4.执行 job

[root@hdp301 ~]# sqoop job -exec kangll

打印的日志 

Sqoop job(80张表的增量同步方案,Sqoop Job 使用 )

5.运行结果查看

Sqoop job(80张表的增量同步方案,Sqoop Job 使用 )

为什么要创建 Sqoop job , 因为 job 可以在  /root/.sqoop/metastore.db.script   保存监控的最近的 时间戳字段,如果不使用 Sqoop job 保存,默认是会如下的效果 ,拿到 给的初始的值和查出的最大值更新插入

Sqoop job(80张表的增量同步方案,Sqoop Job 使用 )

6.MySQL中 新插入两条数据

Sqoop job(80张表的增量同步方案,Sqoop Job 使用 )

7.日志中 显示查询的方式

Sqoop job(80张表的增量同步方案,Sqoop Job 使用 )

8.查询 hive 表中的数据

Sqoop job(80张表的增量同步方案,Sqoop Job 使用 )

 2. Sqoop 增量导入

注意:Sqoop 不支持 mysql转hive时使用 lastmodified 模式进行增量导入

nohup sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect ${driver} \
--username ${dbUsername} \
--password ${dbPasswd} \
--table "${tableName}" \
--hive-import \
--hive-database data_exchange \
--hive-table "${tableName}" \
--hive-partition-key  "dt" \
--hive-partition-value "${date}" \
--fields-terminated-by '\001' \
--external-table-dir "/winhadoop/ods/data_exchange.db/${tableName}" \
--check-column jhpt_update_time \
--incremental append \
--last-value '1990-02-02 12:21:21' \
--target-dir "/sqoop/data/append/" \
--m 1 \
--null-string '\\N' \
--null-non-string '\\N' \
--mapreduce-job-name data_exchange_${tableName} >> ${sfyp_log}/ods_data_exchange.${date}.log

 

还有一点: sqoop job  密码 保存 用参数

--password-file /input/sqoop/pwd/sqoopPWD.pwd

创建保存密码的文件,上传到HDFS

echo -n "hadoop" > sqoopPWD.pwd
hdfs dfs  -mkdir -p /input/sqoop/pwd/sqoopPWD.pwd
​echo -n "hadoop" > sqoopPWD.pwd
hdfs dfs  -mkdir -p /input/sqoop/pwd/sqoopPWD.pwd
hdfs dfs -put sqoopPWD.pwd /input/sqoop/pwd
hdfs dfs -chmod 400 /input/sqoop/pwd/sqoopPWD.pwd
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

TEZNKK3IfmPf