2017-08-26 2 views
0

Ich habe eine Hive-Tabelle auf Länderspalte partitioniert. Meine RDBMS Spalten sind wie folgt:Ich möchte Daten mit shoop Import-Job in Hive-Spalte partitionierte Tabelle shoop. Wie können wir das tun?

id int, fname varchar(45), lname varchar(45), email varchar(45), password varchar(45), street varchar(45), city varchar(45), state varchar(45), zipcode varchar(45), c_time timestamp 

Beispieldaten: 1, Richard, Hernandez, XXXXXXXXX, XXXXXXXXX, 6303 Heather Plaza, Brownsville, TX, 69696,2017-07-20 20: 24: 17.0

Sqoop Job:

sqoop job --create customer_partition -- import --connect jdbc:mysql://host/serverName 
    --username root -P --table customers --check-column c_time --incremental lastmodified 
--last-value 0 --merge-key id --target-dir '/user/cloudera/partitionedTables/customers_partition/' 
    --fields-terminated-by ',' --hive-import 
    --hive-table customers_partition --hive-partition-key "state"; 

Hive partitionierten Tabelle:

create external table customers_partition(id int, fname varchar(64), lname varchar(64), email varchar(64), 
password varchar(64), street varchar(45), city varchar(45), zipcode varchar(64), cob_dt timestamp) 
partitioned by (state varchar(45)) 
row format delimited 
fields terminated by ',' 
location '/hdfsPath/customers_partition/'; 

Nach Sqoop Import in hdfs Ordner Ausgabedatei Daten wie unten Format enthält:

1,Richard,Hernandez,XXXXXXXXX,XXXXXXXXX,6303 Heather Plaza,Brownsville,TX,69696,2017-07-20 20:24:17.0 
which points to same columns same as RDBMS columns. 

When I perform hive query: select * from customers_partition; showing 0 records found in hive. 

Dies liegt daran, dass der Bienenstock Tabellenspalte Anordnung wegen Partition von normalen RDBMS Tabellenspalte Anordnung unterschiedlich ist.

Wie können wir dieses Problem lösen? Ich möchte Import-Daten direkt in Hive-Partitionstabelle sqoop und Datensätze müssen aktualisiert werden, wenn ich diesen sqoop Job ausführen. Wenn ich falsch liege, gibt es einen alternativen Weg, dies zu tun?

Auch, wie dasselbe mit zwei oder mehr Stockaufteilungsspalten durchzuführen.

Antwort

0

Sie müssen --hive-partition-value Argumente hinzufügen. Der Partitionswert muss eine Zeichenfolge sein.

Da Sie sqoop job --create--last-value 0 verwenden, ist nicht erforderlich. Bitte entfernen Sie es.

+0

Gibt es eine Möglichkeit, den dynamischen Datenimport in partitionierte Spalten durchzuführen, statt Werte zu geben? Auch sollte es RDBMS Spalten Sequenz und Hive Colunms Partitionen sollten gleich sein. Bitte erkläre mich dazu. – Chaithu

+0

Ja, hier ist die Referenz https://community.hortonworks.com/questions/43982/sqoop-insert-into-partitioned-table.html –

Verwandte Themen