我想连接两个表,但我对不同类型的连接有点迷茫
A(a_name:chararray, a_number:int)
a 1
b 2
c
d 3
e
B(b_id:int, b_name:chararray)
1 one
2 two
3 three
我知道我需要加入,但是
AB = JOIN A by a_number, B by b_id;
FOREACH AB GENERATE
a_name,
b_name as a_number;
我明白了
a one
b two
d three
而不是
a one
b two
c
d three
e
这是我真正想要的。我该怎么做?
编辑:
好的,我尝试了左连接,但它没有保持行顺序,而是返回
a one
b two
d three
c
e
有解决办法吗?
1条答案
按热度按时间w46czmvw1#
你在找左边的
JOIN
.这将使所有值保持在关系的左侧,即使它们不显示在右侧。pig默认为内部
JOIN
,因此它只保留两边的值。这将产生你所期望的。
此外,您应该能够将这两种关系压缩为:
据我所知,在这方面没有选择
JOIN
颠倒左关系的顺序。但是,你可以RANK
A
那么事先ORDER
在号码上RANK
在JOIN
.