在 Pig 中合并两个数据集

div*_*gon 5 hadoop apache-pig piglet

我有一个 pig 脚本,我在其中加载数据集,将其分成两个单独的数据集,然后执行一些计算,最后向其中添加另一个计算字段。现在我想加入这两个数据集。

A = LOAD '/user/hdfs/file1' AS (a:int, b:int);

A1 = FILTER A BY a > 100;
A2 = FILTER A BY a <= 100 AND b > 100;

-- Now I do some calculation on A1 and A2
Run Code Online (Sandbox Code Playgroud)

所以基本上,在计算之后,这里是两者的模式:

{A1 : {a:int, b:int, type:chararray}}
{A2:  {a:int, b:int, type:chararray}}
Run Code Online (Sandbox Code Playgroud)

现在,在我将其转储回 HDFS 之前,我想将两个数据集合并回来。类似于UNION ALLSQL 中的东西。我怎样才能做到这一点?

Chr*_*ite 5

UNION 应该对你有用——但你的原始模式与显示的输出不匹配(b 被加载为一个字符数组,后来变成一个 int)——我假设这是一个错字。

如果元组具有不同顺序的字段,则可以在执行 UNION 时使用 ONSCHEMA 关键字:

A_MERGED = UNION ONSCHEMA A1, A2;
Run Code Online (Sandbox Code Playgroud)

编辑链接到UNION的 PigLatin 文档