使用Lastmodified进行SQOOP增量导入

时间:2016-09-11 15:12:57

标签: hive hdfs sqoop

我试图通过" LastModified"来理解SQOOP-增量进口选项。 由于HDFS不适用于文件更新,如何在内部处理? 是通过创建一个单独的文件并将原始文件指向这个新文件吗? 如果是追加 - 用新记录创建一个新文件?也许??

但最后修改的标志如何更新HDFS数据...这背后的逻辑?

1 个答案:

答案 0 :(得分:1)

--append模式

您只是添加新数据。每个Sqoop增量导入操作都将在hdfs目录中添加部分文件。例如 - part-m-00000part-m-00001

--lastmodified模式

除了新添加的数据外,还有更新。当您尝试第二次运行此命令时,它会给您错误(因为目标目录相同):

  

导入时出错:使用--incremental lastmodified并且输出目录存在时,需要使用--merge-key或--append。

现在,如果添加--append,它只会将新文件添加到同一目录中。现在,您必须使用Sqoop Merge手动合并两个文件中的数据。

根据文档,

  

合并工具允许您组合两个数据集,其中一个数据集中的条目应覆盖旧数据集的条目。例如,在最后修改模式下的增量导入运行将在HDFS中生成多个数据集,其中每个数据集中会连续出现更新的数据。合并工具将两个数据集“展平”为一个,获取每个主键的最新可用记录。

否则,您可以选择--merge-key,它会自动合并。