0

我了解 Sqoop 提供了几种处理增量导入的方法

追加模式

最后修改模式

追加模式的问题:

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

  2. 这种模式是否意味着新数据被附加到现有的 HDFS 文件中,或者它只从源数据库中选择新数据,或者两者兼而有之?

  3. 假设检查列是源表中的 id 列。表中已经存在 id 列为 100 的行。当在 append 模式下运行 sqoop 导入时,最后一个值为 50。现在它会导入 id > 50 的所有行。再次使用 last- 运行时value 为 150,但这次 id 值为 100 的行更新为 200。这行也会被拉取吗?

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

100 abc xyz 5000

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

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

200 abc xyz 6000

如果您再次运行 sqoop 命令,这是否会拉出上述记录也是问题。

关于 lastmodified 模式的问题:

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

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

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

  4. 是否应该存在目标目录以使合并过程发生,以便 sqoop 将现有目标目录视为旧数据集?不然Sqoop怎么会合并旧数据集呢?

4

1 回答 1

0

附加模式的答案:

  1. 是的,它必须是整数

  2. 两个都

  3. 问题不清楚。

lastmodified 模式的答案:

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

  2. 合并过程完全不同。一旦您拥有旧数据和新数据,您就可以将新数据合并到旧数据到不同的目录中。您可以在此处查看详细说明。

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

  4. 目标目录不应该存在。该视频涵盖了完整的合并过程

于 2015-12-22T09:38:12.203 回答