Apache Sqoop增量导入

时间:2015-12-21 17:11:07

标签: hadoop sqoop incremental-build

据我所知,Sqoop提供了几种处理增量导入的方法

  

追加模式

     

lastmodified mode

有关附加模式的问题:

  1. 仅对检查列支持追加模式为整数数据类型吗?如果我想使用日期或时间戳列但仍然只想附加到已经存在于HDFS中的数据,该怎么办?

  2. 此模式是否意味着新数据会附加到现有HDFS文件中,或者只从源数据库中选择新数据或两者都是?

  3. 假设check-column是源表中的id列。表中已存在一行,其中id列为100.当在追加模式下运行sqoop导入时,其中last-value为50.现在,它将导入id为>的所有行。 50.当使用last-value为150再次运行时,但这次id值为100的行更新为200.此行也会被拉出来吗?

  4. 示例:假设有一个名为customers的表,其中一条记录如下。第一列是id。

    100 abc xyz 5000

    当在追加模式下运行Sqoop作业并且id列的最后一个值为50时,它将拉出上述记录。

    现在相同的记录被更改,id也会被更改(虽然是假设的例子),如下所示

    200 abc xyz 6000

    如果你再次运行sqoop命令,那么这也会提出上述记录。

    有关上次修改模式的问题:

    1. 看起来使用此模式运行sqoop会在内部使用2个MR作业将现有数据与新数据合并。 sqoop用于比较合并过程的旧列和新列的列是什么?

    2. 用户可以指定合并过程的列吗?

    3. 是否可以提供多个必须用于合并过程的列?

    4. 目标dir是否存在才能使合并过程发生,以便sqoop将现有目标dir视为旧数据集?否则,Sqoop将如何合并旧的数据集?

1 个答案:

答案 0 :(得分:0)

追加模式的答案:

  1. 是的,它必须是整数

  2. 两个

  3. 问题不明确。

  4. 上次修改模式的答案:

    1. 增量加载不会将数据与lastmodified合并,主要是使用时间戳来提取更新和插入的数据。

    2. 合并过程完全不同。一旦获得旧数据和新数据,就可以将新数据合并到旧数据到另一个目录。您可以查看详细解释here

    3. 合并流程仅适用于一个字段

    4. target-dir不应该存在。该视频涵盖了完整的合并过程