sqoop定時增量抽取資料到hive

2021-08-20 06:54:45 字數 1327 閱讀 5478

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.觸發器 在要抽取的表上建立需要的觸發器,一般要建立插入 修改 刪除三個觸發器,每當源表中的資料發生變化,就被相應的觸發器將變化的資料寫入乙個臨時表,抽取執行緒從臨時表中抽取資料,臨時表中抽取過的資料被標記或刪除。觸發器方式的優點是資料抽取的效能較高,缺點是要求業務表建立觸發器,對業務系統有一定的...