如何在使用sqoop导入hadoop时识别sqlserver中已删除的记录

mec1mxoz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(432)

当使用sqoop将数据从sqlserver或任何rdbms数据库导入hadoop时,我们可以使用增量式append或last-modified或一些自由形式的查询来获取新追加的记录或修改的记录。
我们是否可以识别已删除的记录?考虑到当记录被删除时,它将不存在于sql表中。
一种解决方法是使用sqoop加载完整的表,并与hive中的上一个表进行比较。
还有其他最好的方法吗?

oknwwptz

oknwwptz1#

增量sqooping不处理现成的已删除记录。有两种方法你可能需要考虑。
请看这个帖子。

p3rjfoxz

p3rjfoxz2#

不,不能使用sqoop获取已删除的记录。
更好的解决方法可以是:
创建 boolean 字段 status (默认值) true )在sql server表中。
无论何时需要删除该记录,不要删除,只要用标记状态更新即可 false .
如果您正在使用 last-modified 增量导入,您将在hdfs中获得更改后的数据。
稍后(在sqqop导入之后)可以删除所有状态为的记录 false .

35g0bw71

35g0bw713#

如果要同步整个分区或表,则可以在sqoop导入之后标识已删除的记录,然后使用与现有目标分区或表的完全联接将它们合并。目标表/分区中存在的、导入数据中不存在的记录是自上次同步后在源数据库中删除的记录。

相关问题