Apache pig查询加入两个模式

时间:2015-11-21 08:46:25

标签: hadoop apache-pig

例如,

  relation1: {a: chararray, b: chararray}
  (1, abc)
  (2, asd)
  relation2: {a: chararray, c: chararray}
  (1, 2.5)
  (2, 4.0)

问题是: 是否有可能得到与架构的结果关系如下: 例如: realtion1中的元组数为2,关系2中的元组数为2.结果关系中的元组数也应为2。

  relation3: {a: chararray, b: chararray, c: chararray}
  (1, abc, 2.5)
  (2, asd, 4.0)

任何人都可以帮助解决这个问题。

1 个答案:

答案 0 :(得分:2)

joined = JOIN relation1 BY a, relation2 BY a;
describe joined;
-- joined: {relation1::a: chararray,relation1::b: chararray,relation2::a: chararray,relation2::c: chararray}
relation3 = FOREACH joined GENERATE relation1::a AS a, b, c;
describe relation3;
-- relation3: {a: chararray, b: chararray, c: chararray}

'::'被称为disambugate operator,用于在某些操作(例如连接)之后解除冲突模式。在连接之后,每个别名的所有值仍然存在,您可以使用FOREACH将它们拉出来。