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