使用hcatalog进行Sqoop增量导出?

时间:2016-04-19 18:50:28

标签: hadoop hive sqoop hadoop2 hcatalog

有没有办法使用sqoop进行增量导出?我正在为sqoop使用Hcatalog集成。我尝试使用--last-value, - check-column选项用于增量导入,但sqoop给了我错误选项无效。

2 个答案:

答案 0 :(得分:2)

我没有看到增量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表。

答案 1 :(得分:0)

默认情况下,sqoop不支持使用hcatalog集成进行增量更新,当我们尝试它时会出现以下错误

导入的附加模式与HCatalog不兼容。请删除参数 - append-mode 在org.apache.sqoop.tool.BaseSqoopTool.validateHCatalogOptions(BaseSqoopTool.java:1561)

您可以使用查询选项使其正常工作。如this hortonworks document

中所述