2017-08-26 114 views
0

我有一個配置單元表分區在國家列。 我的RDBMS列如下:我想sqoop數據使用sqoop導入作業進入配置單元列分區表。我們應該怎麼做?

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 

樣本數據: 1,理查德,Hernandez的,XXXXXXXXX,XXXXXXXXX,6303石楠廣場斯維爾,TX,69696,2017-07-20 20:24:17.0

Sqoop工作:

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"; 

蜂巢分區表:

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/'; 

後在HDFS夾輸出文件sqoop導入包含數據如下格式:

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. 

這是因爲因爲分區的蜂巢表列佈置是從正常RDBMS表列排列不同。

我們該如何解決這個問題。我想sqoop直接導入數據到蜂巢分區表和記錄需要更新,當我運行這個sqoop作業。如果我錯了,有沒有其他方法可以做到這一點?

此外如何使用兩個或更多配置單元分區列執行相同的操作。

回答

0

您需要添加--hive-partition-value參數。分區值必須是一個字符串。

由於您使用的是sqoop job --create--last-value 0不是必需的。請刪除它。

+0

有什麼辦法可以將動態數據導入分區列而不是賦值嗎?還應該有RDBMS列序列和配置單元分區應該是相同的。請在此解釋我。 – Chaithu

+0

是的,這裏是參考https://community.hortonworks.com/questions/43982/sqoop-insert-into-partitioned-table.html –