连接来自不同关系的字段
Concatenate fields from different relations
有两个关系
r1: {f1: chararray, f2: chararray}
r2: {f3: chararray, f4: chararray}
两个关系中都没有唯一键,但元组数相同
有没有办法连接关系的相应字段以获得类似 f2、f4 的输出?
如果元组的顺序正确,您可以使用 RANK。
r1a = RANK r1 BY * DENSE;
r2a = RANK r2 BY * DENSE;
r1r2 = JOIN r1a BY [=10=], r2a BY [=10=];
另一种选择是使用:CROSS (http://pig.apache.org/docs/r0.12.0/basic.html#cross)
注意:摘自文档:CROSS 是一项昂贵的操作,应谨慎使用。
猪脚本:
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
输出:DUMP R4:
(f2_value,f4_value)
有两个关系
r1: {f1: chararray, f2: chararray}
r2: {f3: chararray, f4: chararray}
两个关系中都没有唯一键,但元组数相同
有没有办法连接关系的相应字段以获得类似 f2、f4 的输出?
如果元组的顺序正确,您可以使用 RANK。
r1a = RANK r1 BY * DENSE;
r2a = RANK r2 BY * DENSE;
r1r2 = JOIN r1a BY [=10=], r2a BY [=10=];
另一种选择是使用:CROSS (http://pig.apache.org/docs/r0.12.0/basic.html#cross)
注意:摘自文档:CROSS 是一项昂贵的操作,应谨慎使用。
猪脚本:
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
输出:DUMP R4:
(f2_value,f4_value)