1、 第一次全量抽取,並建立hive表
#keberos認證
kinit -kt hdfs.keytab hdfs
#從oracle導資料到hive
sqoop import --connectjdbc:oracle:thin:@xx.xx.xx.xx:1521:xx\
--username ***--password ***\
--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 ***--password ***\
--table prod_fdc.equipment \
--target-dir=/user/hive/warehouse/fdc_test.db/equipment \
--hive-import --hive-database fdc_test --hive-table equipment \
--check-column equipmentid --last-value 1893
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
可能存在的問題:
1) 有些源庫的表,沒有自增序列pk,也沒有日期字段,這種情況sqoop沒法自動判斷哪些是增量資料,無法配置增量程式,還要再研究一下這種情況如何處理;
2) 在伺服器上的定時作業,如果kerberos 過期了,估計會無法執行,需要在伺服器重新認證
利用sqoop進行全量抽取和增量抽取
sqoop是apache開源的一款在hadoop和關聯式資料庫伺服器之間傳輸資料的工具。主要用於在hadoop與關係型資料庫之間進行資料轉移,可以將乙個關係型資料庫 mysql oracle等 中的資料匯入到hadoop的hdfs中,也可以將hdfs的資料匯出到關係型資料庫中。sqoop支援的另乙個...
sqoop定時增量匯入匯出
舉報sqoop使用hsql來儲存job資訊,開啟metastor service將job資訊共享,所有node上的sqoop都可以執行同乙個job 一 sqoop的配置檔案在sqoop.site.xml中 1 sqoop.metastore.server.location 本地儲存路徑,預設在tmp...
增量資料抽取
a.觸發器 在要抽取的表上建立需要的觸發器,一般要建立插入 修改 刪除三個觸發器,每當源表中的資料發生變化,就被相應的觸發器將變化的資料寫入乙個臨時表,抽取執行緒從臨時表中抽取資料,臨時表中抽取過的資料被標記或刪除。觸發器方式的優點是資料抽取的效能較高,缺點是要求業務表建立觸發器,對業務系統有一定的...