在PIg中连接行(组合来自两个不同来源的数据集)

时间:2014-07-22 17:29:00

标签: apache-pig

假设我有两个数据集

ID Name
1 Dog
2 Cat

和另一个数据集

ID Name Age
3 Man 23

我将两个装入猪,然后从第二个中删除年龄字段,现在我如何将两个结合起来以便我得到

Id Name
1 Dog
2 Cat
3 Man

它们可以分布在地图绘制器上,并以任何顺序添加到任何映射器。我只是希望它们在一起,所以我可以在下一个map-reduce阶段执行类似操作(删除重复并获取最新的时间戳)。

3 个答案:

答案 0 :(得分:1)

试试这个,

set1 = load 'dataset1' as (ID,Name);
set2 = load 'dataset2' as (ID,Name,Age);
set3 = foreach set2 generate ID,Name;

Result = UNION set1,set3;

答案 1 :(得分:0)

使用UNIONhttp://pig.apache.org/docs/r0.12.1/basic.html#union

正如您在示例中所看到的,您不需要从set2中删除Age字段 但如果您愿意,只需使用GENERATE

即可
set3 = foreach set2 GENERATE Id, Name.

set4 = set1 UNION set3

此致

答案 2 :(得分:0)

set1 = load' dataset1' as(ID,Name);

set2 = load' dataset2' as(身份证,姓名,年龄);

set3 = foreach set2生成ID,名称;

结果= UNION set1,set3;

但输出顺序可能会发生变化

但是当你转储时,你可能会得到

Id名称

3人

1只狗

2只猫

当我们在猪中执行UNION时,订单会发生变化,对于上述数据,您可能找不到任何差异,但是当我们为两个以上的文件执行联合时,订单会发生变化。