Sqoop Merge – 在Sqoop中合并数据集的工具

1.Sqoop Merge介绍及其目的

说到合并两个数据集,通常在Sqoop中使用Merge工具。 当一个数据集中的记录覆盖较旧数据集的记录时,我们通常用到这个工具。 

如在增量模式下,Sqoop Import将在HDFS中生成多个数据集,每个数据集显示更新后的数据。 通过这个工具会将两个数据集“合并”为一个数据集。

2. Sqoop Merge语法和参数

$ sqoop merge(generic-args)(merge-args)

Sqoop Merge参数可以以任何顺序输入,而Hadoop通用参数必须在任何merge参数之前。

Merge参数

1542547385966030.png

Sqoop Merge运行时,运行以两个目录作为输入的MapReduce作业,如较新的数据集和较旧的数据集。可以分别用-new-data和-onto来指定新旧数据集。MapReduce作业的输出将输出在-target-dir指定的HDFS目录中。

当合并数据集时,每条记录中都有唯一的主键值。-merge-key指定主键的列。如果同一数据集中的多个行具有相同的主键,合并时可能会发生数据丢失。

此外,须使用先前导入时,自动生成的Java类来解析数据集并提取关键列。须指定参数-class-name和-jar-file,指定类名以及jar文件。

假设在HDFS目录中执行了两个增量导入,其中一些旧数据命名为old数据集和较新数据命名为newer数据集。必须保证新旧数据集的类型一致。可以合并为:

$ sqoop merge -new-data newer -onto old -target-dir merged \
   -jar-file datatypes.jar -class-name Foo -merge-key id

Sqoop Merge – 在Sqoop中合并数据集的工具

发表评论

邮箱地址不会被公开。 必填项已用*标注

− 4 = 二

滚动到顶部