Apache Pig - Store / Flatten Bag,因此可以输出为CSV

时间:2015-09-04 12:52:39

标签: apache-pig

我承认这不是一个很好的问题标题。

这是我的问题,我从查询中得到以下输出,其中每一行都是:

{(570349476329862),(570349476329862),(570349476329862)} {(66638102521614253348753),(66638102521614253348753),(66638102521614253348753)} 3

以上的架构是:

{{(ID1:chararray)},{(ID2:chararray)},COUNT:long}

我要做的是以CSV格式生成输出,以便可以轻松地将其输入数据库,例如把上面变成:

570349476329862,66638102521614253348753,3

我想我要把包包弄平,但是虽然这个'编译'但它不会运行。

欢迎任何想法。

由于

1 个答案:

答案 0 :(得分:0)

如果你的包上有相同的数据,例如一组的结果,你可以做两件事:

  • 在分组中涉及给定字段,而不是您不需要处理

... B = FOREACH (GROUP A BY (COUNT, ID1, ID2)) GENERATE FLATTEN(group) AS (COUNT, ID1, ID2), ...

  • 或使用内置功能,例如MAX

    ...
    B = FOREACH (GROUP A BY COUNT) GENERATE FLATTEN(group) AS COUNT, MAX(A.ID1) AS ID1, MAX(A.ID2) AS ID1, ...
    这与建议的datafu函数相比,你可以使用内置函数来实现这一点。

我希望这会有所帮助