如果模式未知,则在加入后从一侧获取所有字段

时间:2015-09-08 11:57:35

标签: apache-pig

我有2个关系,没有架构:

rel1 = load '$path1' using PigStorage('\t');
rel2 = load '$path2' using PigStorage('\t');

我希望通过第一个字段加入它们,并从rel1获取所有字段。我怎么能和猪一起做?我使用rel1.$0..语法没有运气:

filtered = foreach (join rel1 by $0, join rel2 by $0) generate ???

1 个答案:

答案 0 :(得分:0)

最后,我使用cogroup表达式管理它:

定义FirstTupleFromBag datafu.pig.bags.FirstTupleFromBag;

rel1 = load '$path1' using PigStorage('\t');
rel2 = load '$path2' using PigStorage('\t');

filtered = foreach (cogroup rel1 by $0, rel2 by $0) generate flatten(rel1.$0), flatten(rel2.$0), flatten(FirstTupleFromBag(rel1, null));

result = foreach filtered generate $2..;

我使用flatten用于rel2rel1个关键字段,以使cogroup充当内部联接。

虽然这有效,但我认为应该有一个更简单的解决方案。