我有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 ???
答案 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
用于rel2
和rel1
个关键字段,以使cogroup
充当内部联接。
虽然这有效,但我认为应该有一个更简单的解决方案。