如何在猪身上变平,变性

时间:2014-04-21 22:11:37

标签: apache-pig

我想从以下架构

创建一个展平的连接表
   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

我怎么会在猪身上做到这一点?

1 个答案:

答案 0 :(得分:2)

  1. 项目前两列。

    x = foreach titles生成root_id,id;

  2. 在第二列上展平。

    y = foreach x生成root_id,FLATTEN(ids)as(idtype:chararray,idvalue:chararray);

  3. 这将以下列格式为您提供结果: root_id idtype idvalue
    1 x foo

    1 y bar

    2 x fiz

    2 y buzz

    3 x moo

    项目第一和第三列以获得所需结果。