使用Sqoop将数据从sql server或任何RDBMS数据库导入hadoop时,我们可以使用增量追加或最后修改或一些自由格式查询来获取新附加的记录或修改的记录。
我们是否可以识别已删除的记录?考虑到何时删除记录,它将不存在于sql表中。
一种解决方法是使用Sqoop加载全表并与hive中的上一个表进行比较。
还有其他最好的办法吗?
答案 0 :(得分:1)
不,您无法使用sqoop获取已删除的记录。
更好的解决方法可能是:
在SQL Server表中创建boolean
字段status
(默认true
)。
每当您需要删除该记录时,请勿删除标记状态为false
的更新。
如果您使用last-modified
增量导入,您将在HDFS中获得此更改的数据。
稍后(在sqqop导入后),您可以删除状态为false
的所有这些记录。
答案 1 :(得分:0)
如果要同步整个分区或表,则可以在sqoop导入之后识别已删除的记录,然后使用完全连接与现有目标分区或表合并它们。目标表/分区中存在的导入数据中不存在的记录是自上次同步以来在源数据库中删除的记录。
答案 2 :(得分:0)
增量sqooping不会立即处理已删除的记录。您可能需要考虑两种方法。
请查看此post。