Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用Sqoop导入hadoop时识别sql server中已删除的记录_Sql_Sql Server_Hadoop_Hive_Sqoop - Fatal编程技术网

如何在使用Sqoop导入hadoop时识别sql server中已删除的记录

如何在使用Sqoop导入hadoop时识别sql server中已删除的记录,sql,sql-server,hadoop,hive,sqoop,Sql,Sql Server,Hadoop,Hive,Sqoop,当使用Sqoop将数据从sql server或任何RDBMS数据库导入hadoop时,我们可以使用增量追加或上次修改或一些自由形式查询来获取新追加的记录或修改的记录 我们是否可以识别已删除的记录?考虑到记录何时被删除,它将不存在于sql表中 一种解决方法是使用Sqoop加载完整的表,并与配置单元中的上一个表进行比较 还有其他最好的方法吗 否,无法使用sqoop获取已删除的记录 更好的解决办法可以是: 在SQL Server表中创建一个boolean字段status(默认值true) 无论何时需要

当使用Sqoop将数据从sql server或任何RDBMS数据库导入hadoop时,我们可以使用增量追加或上次修改或一些自由形式查询来获取新追加的记录或修改的记录

我们是否可以识别已删除的记录?考虑到记录何时被删除,它将不存在于sql表中

一种解决方法是使用Sqoop加载完整的表,并与配置单元中的上一个表进行比较


还有其他最好的方法吗

否,无法使用sqoop获取已删除的记录

更好的解决办法可以是:

在SQL Server表中创建一个
boolean
字段
status
(默认值
true

无论何时需要删除该记录,不要删除,只需使用标记状态更新
false

如果您使用的是上次修改的增量导入,您将在HDFS中获得更改后的数据


稍后(在sqqop导入之后),您可以删除所有这些状态为
false

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

增量sqooping不会处理即时删除的记录。有两种方法你可能需要考虑。


请看这个。

谢谢开发人员。源代码是另一个系统,我们无法控制它。因此,我认为这种方法不适合我的情况。