2016-07-04 11 views
1

Ich habe eine Tabelle in Oracle mit nur 4 Spalten ...Incrimental Update in HIVE Tabelle mit Sqoop

MemberID --- bigint

Uuid --- String

Insert --- Datum

updatedate --- Datum

ich diese Daten in HIVE Tabelle mit Sqoop importieren möchten. Ich schaffe entsprechende HIVE Tabelle mit

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

und Sqoop Befehl

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 

Seine einwandfrei funktioniert und in der Lage Daten in HIVE Tabelle zu importieren.

Jetzt möchte ich diese Tabelle mit inkrementellen Update mit updatete (letzter Wert des heutigen Tages) aktualisieren, so dass ich täglich Aktualisierung für diese OLTP-Tabelle in meine HIVE-Tabelle mit sqoop erhalten kann.

für inkrementellen Import Ich verwende folgenden Sqoop Befehl

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 

Aber ich bin immer Ausnahme

„-Modus anhänge für hive Importen wird noch nicht unterstützt. Bitte entfernen Sie den Parameter --append-Modus“

Wenn ich den --hive-Import entferne es richtig laufen, aber ich habe diese neue Aktualisierung in der HIVE-Tabelle nicht gefunden, die ich in der OLTP-Tabelle habe.

Mache ich etwas falsch? Bitte schlagen Sie mir vor, wie ich ein inkrementelles Update mit Oracle - Hive mit sqoop ausführen kann.

Jede Hilfe wird angeeignet werden ..

Vielen Dank im Voraus ...

Antwort

0

Obwohl ich genau Ihr Szenario keine Ressourcen haben zu replizieren. Sie können versuchen, einen sqoop-Job zu erstellen und Ihren Anwendungsfall zu testen.

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) 

Wenn Sie einen SQLOOP-Job erstellen, wird der --last-Wert für nachfolgende Läufe berücksichtigt. Auch hier habe ich die Datendatei der Hive-Tabelle als Ziel für die inkrementelle Aktualisierung verwendet.

Hope dies bietet eine hilfreiche Richtung, um fortzufahren.