我想从以下架构
创建一个展平的连接表 titles = FOREACH programs GENERATE (px.pig.udf.PARSE_KEYWORDS(program_xml))
AS program:
(root_id: long,
ids:bag {(idtype:chararray, idvalue:chararray)},
keywords:bag {(keytype:chararray,keyvalue:chararray)});
如果输入是
(1, {('x','foo'),('y','bar')},{})
(2, {('x','fiz'),('y','buzz')},{})
(2, {('x','moo')},{})
...
输出应该是这样的:
root_id idvalue
1 foo
1 bar
2 fiz
2 buzz
3 moo
我怎么会在猪身上做到这一点?
答案 0 :(得分:2)
项目前两列。
x = foreach titles生成root_id,id;
在第二列上展平。
y = foreach x生成root_id,FLATTEN(ids)as(idtype:chararray,idvalue:chararray);
这将以下列格式为您提供结果:
root_id idtype idvalue
1 x foo
1 y bar
2 x fiz
2 y buzz
3 x moo
项目第一和第三列以获得所需结果。