apachesqoop增量导入

zf9nrax1  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(399)

我知道sqoop提供了两种方法来处理增量导入
附加模式
上次修改模式
关于附加模式的问题:
只有check列作为integer数据类型才支持append模式吗?如果我想使用日期或时间戳列,但仍然只想附加到hdfs中已经存在的数据,该怎么办?
这种模式是指新数据附加到现有的hdfs文件中,还是只从源db中选取新数据,或者两者兼而有之?
假设check列是源表中的id列。表中已存在id列为100的行。当sqoop导入在最后一个值为50的append模式下运行时。现在它导入id>50的所有行。再次运行时,最后一个值为150,但这次id值为100的行更新为200。这一排也会被拉吗?
示例:假设有一个名为customers的表,其中一条记录如下。第一列是id。
100 xyz 5000
当sqoop作业在append模式下运行并且id列的最后一个值为50时,它将拉取上面的记录。
现在,同一条记录被更改,id也被更改(尽管是假设的示例),如下所示
200 xyz 6000
如果您再次运行sqoop命令,这是否也会拉取上面的记录是个问题。
关于上次修改模式的问题:
看起来使用此模式运行sqoop会在内部使用2个mr作业将现有数据与新数据合并。sqoop在合并过程中使用哪个列比较新旧?
用户能否为合并进程指定列?
是否可以提供多个必须用于合并过程的列?
合并进程是否应该存在目标目录,以便sqoop将现有的目标目录视为旧数据集?否则,sqoop将如何合并要合并的旧数据集?

rur96b6h

rur96b6h1#

追加模式的答案:
是的,它必须是整数
二者都
这个问题不清楚。
上次修改模式的答案:
增量加载不会将数据与lastmodified合并,它主要是使用时间戳提取更新和插入的数据。
合并过程完全不同。一旦有了旧数据和新数据,就可以将新数据合并到另一个目录的旧数据中。你可以在这里看到详细的解释。
合并过程只适用于一个字段
目标目录不应存在。视频涵盖了完整的合并过程

相关问题