我试图通过" LastModified"来理解SQOOP-增量进口选项。 由于HDFS不适用于文件更新,如何在内部处理? 是通过创建一个单独的文件并将原始文件指向这个新文件吗? 如果是追加 - 用新记录创建一个新文件?也许??
但最后修改的标志如何更新HDFS数据...这背后的逻辑?
答案 0 :(得分:1)
--append
模式您只是添加新数据。每个Sqoop增量导入操作都将在hdfs目录中添加部分文件。例如 - part-m-00000
,part-m-00001
--lastmodified
模式除了新添加的数据外,还有更新。当您尝试第二次运行此命令时,它会给您错误(因为目标目录相同):
导入时出错:使用--incremental lastmodified并且输出目录存在时,需要使用--merge-key或--append。
现在,如果添加--append
,它只会将新文件添加到同一目录中。现在,您必须使用Sqoop Merge手动合并两个文件中的数据。
根据文档,
合并工具允许您组合两个数据集,其中一个数据集中的条目应覆盖旧数据集的条目。例如,在最后修改模式下的增量导入运行将在HDFS中生成多个数据集,其中每个数据集中会连续出现更新的数据。合并工具将两个数据集“展平”为一个,获取每个主键的最新可用记录。
否则,您可以选择--merge-key
,它会自动合并。