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

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

猜你喜欢

转载自blog.csdn.net/xiaolong_4_2/article/details/82111158
今日推荐