据我所知,Sqoop提供了几种处理增量导入的方法
追加模式
lastmodified mode
有关附加模式的问题:
仅对检查列支持追加模式为整数数据类型吗?如果我想使用日期或时间戳列但仍然只想附加到已经存在于HDFS中的数据,该怎么办?
此模式是否意味着新数据会附加到现有HDFS文件中,或者只从源数据库中选择新数据或两者都是?
假设check-column是源表中的id列。表中已存在一行,其中id列为100.当在追加模式下运行sqoop导入时,其中last-value为50.现在,它将导入id为>的所有行。 50.当使用last-value为150再次运行时,但这次id值为100的行更新为200.此行也会被拉出来吗?
示例:假设有一个名为customers的表,其中一条记录如下。第一列是id。
100 abc xyz 5000
当在追加模式下运行Sqoop作业并且id列的最后一个值为50时,它将拉出上述记录。
现在相同的记录被更改,id也会被更改(虽然是假设的例子),如下所示
200 abc xyz 6000
如果你再次运行sqoop命令,那么这也会提出上述记录。
有关上次修改模式的问题:
看起来使用此模式运行sqoop会在内部使用2个MR作业将现有数据与新数据合并。 sqoop用于比较合并过程的旧列和新列的列是什么?
用户可以指定合并过程的列吗?
是否可以提供多个必须用于合并过程的列?
目标dir是否存在才能使合并过程发生,以便sqoop将现有目标dir视为旧数据集?否则,Sqoop将如何合并旧的数据集?
答案 0 :(得分:0)
追加模式的答案:
是的,它必须是整数
两个
问题不明确。
上次修改模式的答案:
增量加载不会将数据与lastmodified合并,主要是使用时间戳来提取更新和插入的数据。
合并过程完全不同。一旦获得旧数据和新数据,就可以将新数据合并到旧数据到另一个目录。您可以查看详细解释here。
合并流程仅适用于一个字段
target-dir不应该存在。该视频涵盖了完整的合并过程