2016-07-04 64 views
1

我在Oracle中的表只有4列...Incrimental更新使用sqoop

MEMBERID --- BIGINT

UUID ---字符串

insertdate ---日期

updatedate ---日期

我想用sqoop導入在HIVE表這些數據。我創建對應與

create EXTERNAL TABLE memberimport(memberid BIGINT,uuid varchar(36),insertdate timestamp,updatedate timestamp)LOCATION '/user/import/memberimport'; 

和sqoop命令HIVE表

sqoop import --connect jdbc:oracle:thin:@dbURL:1521/dbName --username ** --password *** --hive-import --table MEMBER --columns 'MEMBERID,UUID,INSERTDATE,UPDATEDATE' --map-column-hive MEMBERID=BIGINT,UUID=STRING,INSERTDATE=TIMESTAMP,UPDATEDATE=TIMESTAMP --hive-table memberimport -m 1 

它的正常工作,並能在HIVE表導入數據。

現在我想更新該表與updatedate(最後一個值今天的日期),增量更新,這樣我可以使用sqoop得到一天對於OLTP表日更新到我的HIVE表。

對於增量導入我使用下面的命令sqoop

sqoop import --hive-import --connect jdbc:oracle:thin:@dbURL:1521/dbName --username *** --password *** --table MEMBER --check-column UPDATEDATE --incremental append --columns 'MEMBERID,UUID,INSERTDATE,UPDATEDATE' --map-column-hive MEMBERID=BIGINT,UUID=STRING,INSERTDATE=TIMESTAMP,UPDATEDATE=TIMESTAMP --hive-table memberimport -m 1 

但我得到異常

「附加模式蜂巢進口尚不支持,請刪除參數--append模式」

當我刪除--hive-import它運行正常,但我沒有發現我在OLTP表中的HIVE表中的新更新。

我做錯了什麼? 請教我如何使用sqoop運行Oracle的增量更新 - Hive。

任何幫助將撥款..

在此先感謝...

回答

0

雖然我沒有資源來完全仿照場景。 您可能想要嘗試構建sqoop作業並測試您的用例。

sqoop job --create sqoop_job \ 
    -- import \ 
    --connect "jdbc:oracle://server:port/dbname" \ 
    --username=(XXXX) \ 
    --password=(YYYY) \ 
    --table (TableName)\ 
    --target-dir (Hive Directory corresponding to the table) \ 
    --append \ 
    --fields-terminated-by '(character)' \ 
    --lines-terminated-by '\n' \ 
    --check-column "(Column To Monitor Change)" \ 
    --incremental append \ 
    --last-value (last value of column being monitored) \ 
    --outdir (log directory) 

當您創建sqoop作業時,它會爲後續運行處理--last-value。在這裏我也使用Hive表格的數據文件作爲增量更新的目標。

希望這可以爲您提供一個有用的指導。