假设我有一个雇员表,其列为(emp_id,emp_name,emp_age,emp_update_ts),并且每次表上有更新时,updat_ts字段都会自动更新为当前时间戳。现在我的问题是:

当我更新/插入表中的行并使用lastmodified运行增量sqoop导入时,它将使我的数据库和hdfs同步,但是“如果从表中删除了数据,然后我使用lastmodified选项运行sqoop增量会怎样?它还需要从HDFS删除数据以使其保持同步?还是有其他方法可以处理删除情况?

最佳答案

除非记录在源系统中标记为“已删除”,否则SQOOP Incremental不支持“说”。根据Hortonworks制作的非常有趣的document解释。

因此,对于从未获得过删除记录的任何表,我都使用增量。您会感到惊讶的是,大多数事务性数据库中有多少种这样的数据库。

当我确实有可能具有“DELETE”(并且没有指示符)的表时,我将整个数据集导入到暂存区域中,然后在HIVE中运行“diff”查询以标识已删除的记录。

看到我对HQL查询的post做这个“diff”。

09-26 18:11
查看更多