2016-04-19 76 views

回答

1

中所述我還沒有看到增量sqoop導出參數。您可以嘗試的另一種方法是在配置單元中創建一個contol_table,您可以在每次最後一次導出時保留表名&時間戳記的日誌。

create table if not exists control_table (
table_name string, 
export_date timestamp 
); 

insert into control_table 'export_table1' as table_name, from_unixtime(unix_timestamp()) as export_date from control_table; 

如果export_table1是要逐步,如果以上兩個語句已經執行假設導出表。

--execute below at once 
--get the timestamp when the table was last executed 
create temporary table control_table_now as select table_name, max(export_date) as last_export_date from control_table group by table_name; 

--get incremental rows 
create table new_export_table1 as select field1, field2, field3, .... timestamp1 from export_table1 e, control_table_now c where c.table_name = 'export_table1' and e.timestamp1 >= c.last_export_date; 

--append the control_table for next process 
insert into control_table 'export_table1' as table_name, from_unixtime(unix_timestamp()) as export_date from control_table; 

現在,導出使用sqoop export命令增量創建的new_export_table1表。

+0

sqoop是否適用於更新導出中的行?從new_export_table1,如果我運行sqoop,它會更新舊的行嗎? – VoodooChild

+0

@VoodooChild是的,如果你的Hive表中的export_table1有一個唯一的字段並且同一個字段是結束表中的主鍵,那麼** sqoop **應該更新相應的字段。請參閱https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_inserts_vs_updates – gkc123

0

默認情況下sqoop不支持hcatalog整合增量更新,當我們嘗試它給了以下錯誤

追加方式進口不符合HCatalog兼容。請刪除參數 - 追加模式 在org.apache.sqoop.tool.BaseSqoopTool.validateHCatalogOptions(BaseSqoopTool.java:1561)

您可以使用查詢選項,使其工作。如this hortonworks document