连接来自不同关系的字段

bqjvbblv  于 2021-06-25  发布在  Pig
关注(0)|答案(2)|浏览(316)

有两种关系

r1: {f1: chararray, f2: chararray}
r2: {f3: chararray, f4: chararray}

两个关系中都没有唯一的键,但元组的数目是相同的。
有没有一种方法可以连接关系的相应字段以获得像f2、f4这样的输出?

3z6pesqy

3z6pesqy1#

如果元组的顺序正确,可以使用rank。

r1a = RANK r1 BY * DENSE;
r2a = RANK r2 BY * DENSE;

r1r2 = JOIN r1a BY $0, r2a BY $0;
dba5bblo

dba5bblo2#

另一种选择是使用:交叉(http://pig.apache.org/docs/r0.12.0/basic.html#cross)
注意:从文档中提取:交叉是一个昂贵的操作,应该谨慎使用。
Pig脚本:

R1 = LOAD 'a.csv'  USING  PigStorage(',') AS (f1:chararray,f2:chararray);
R2 = LOAD 'b.csv'  USING  PigStorage(',') AS (f3:chararray,f4:chararray);

R3 = CROSS R1,R2;

R4 = FOREACH R3 GENERATE f2,f4;

DUMP R4;

输入:
a、 csv格式:

f1_value,f2_value

b、 csv文件

f3_Value,f4_value

输出:转储r4:

(f2_value,f4_value)

相关问题