sqoop从mysql到hive实现定时增量导入

本文介绍了使用Sqoop从Oracle数据库抽取数据到Hive的方法。包括第一次全量抽取并创建Hive表,创建增量抽取的job,执行sqoop job,若有问题可删除重创建,还介绍了通过创建.sh程序和使用crontab实现定时执行sqoop job。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、  第一次全量抽取,并创建hive表

#keberos认证

kinit -kt hdfs.keytab hdfs

#从oracle导数据到hive

sqoop import --connectjdbc:oracle:thin:@xx.xx.xx.xx:1521:xx\

            --username xxx--password xxx\

            --table PROD_FDC.EQUIPMENT\

            --target-dir=/user/hive/warehouse/fdc_test.db/equipment\

            --hive-import --hive-database xx--hive-table xx\

            --create-hive-table

在使用时,只需要替换源数据库IP,用户名和密码,以及hive目标表的目录,数据库和表名

2、  创建增量抽取的job

sqoop job --create fdc_equipment_job \

         -- import --connect jdbc:oracle:thin:@xx.xx.xx.xx:1521:xx \

                    --username xxx--password xxx\

                    --table PROD_FDC.EQUIPMENT  \

                    --target-dir=/user/hive/warehouse/fdc_test.db/equipment \

                    --hive-import --hive-database fdc_test --hive-table equipment \

                    --incremental append \

                    --check-column equipmentid --last-value 1893

说明:增量抽取,需要指定--incremental append,同时指定按照源表中哪个pk字段进行增量--check-column equipmentid,并指定hive表中pk当前最大值--last-value 1893。创建sqoop job的目的是,每次执行job以后,sqoop会自动记录pk的last-value,下次再执行时,就会自动指定last-value,不需要手工去改了。

3、  执行sqoop job

sqoop job --exec fdc_equipment_job

如果创建的job有问题,可以删除再重新创建:

sqoop job --delete fdc_equipment_job

4、  定时执行sqoop job

首先创建一个.sh的程序,然后通过crontab –e,创建定时执行程序 

crontab -e

30 0 * * 1 /home/root/fdc/equipment_sqoop.sh >> /home/root/fdc/equipment.log 2>&1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值