合并Pig中的两个数据集

时间:2013-01-11 12:10:12

标签: hadoop apache-pig piglet

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

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

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

{A1 : {a:int, b:int, type:chararray}}
{A2:  {a:int, b:int, type:chararray}}

现在,在我将其转发回HDFS之前,我想要将两个数据集合并回来。类似SQL中的UNION ALL。我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

UNION应该适合你 - 但你原来的架构与显示的输出不匹配(b作为chararray加载,后来变为int) - 我假设这是一个错字。

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

A_MERGED = UNION ONSCHEMA A1, A2;

编辑指向UNION

的PigLatin文档的链接

答案 1 :(得分:0)

您可以使用SPLIT

SPLIT A INTO A1 IF a > 100, A2 IF a <= 100 AND b > 100;
A = UNION A1, A2;