sqoop定時增量匯入匯出

weixin_33941350發表於2015-08-14

 

sqoop定時增量匯入

sqoop使用hsql來儲存job資訊,開啟metastor service將job資訊共享,所有node上的sqoop都可以執行同一個job

一、sqoop的配置檔案在sqoop.site.xml中:

    1、sqoop.metastore.server.location

        本地儲存路徑,預設在tmp下,改為其他路徑

    2、sqoop.metastore.server.port

          metastore service埠號

    3、sqoop.metastore.client.autoconnect.url

        sqoop自動連線的metastore地址,預設是本地的metastore地址

    4、sqoop.metastore.client.enable.autoconnect

       開啟自動連線。sqoop預設連線本地metastore。註釋這個配置會開啟自動連線。

二、開啟metastore service

   sqoop下,nohup bin/sqoop metastore

三、建立job

sqoop支援兩種增量匯入模式,
 一種是 append,即通過指定一個遞增的列,比如:
--incremental append  --check-column num_iid --last-value 0

varchar型別的check欄位也可以通過這種方式增量匯入(ID為varchar型別的遞增數字):

--incremental append  --check-column ID --last-value 8
另種是可以根據時間戳,比如:
--incremental lastmodified --check-column created --last-value '2012-02-01 11:0:00' 
就是隻匯入created 比'2012-02-01 11:0:00'更大的資料。

bin/sqoop job --meta-connect jdbc:hsqldb:hsql://10.106.1.234:16000/sqoop --create job_zyztest13 -- import  --connect jdbc:oracle:thin:@10.106.1.236:1521:orcl --username SQOOP --password sqoop  --table LXC_TEST_HBASE_TO_ORACLE   --columns NAME,SEX,AGE,CSRQ -m 1 --hbase-table SQOOP_IMPORT_TEST3 --column-family info --hbase-row-key  NAME --split-by NAME --incremental lastmodified --check-column CSRQ --last-value '2012-02-01 11:0:00' --verbose
nohup /opt/hadoopcluster/sqoop-1.4.2.bin__hadoop-2.0.0-alpha/bin/sqoop job --exec job_zyztest13 > job_zyztest13.out 2>&1 &

此時,在10.106.1.234上建立了job_zyztest13這個job,通過bin/sqoop job --meta-connect jdbc:hsqldb:hsql://10.106.1.234:16000/sqoop --list可以檢視所有job

四、定時執行

使用linux定時器:crontab -e

編輯定時器,新增*/4 * * * *  /opt/hadoopcluster/sqoop-1.4.2.bin__hadoop-2.0.0-alpha/bin/sqoop job --meta-connect jdbc:hsqldb:hsql://10.106.1.234:16000/sqoop --exec job_zyztest13 > job_zyztest13.out 2>&1 & 任務將會每四分鐘執行一次

相關文章