2015-09-04 57 views
2

不是一个伟大的问题标题我承认。阿帕奇猪 - 存储/拼合袋,所以它可以输出为CSV

这里是我的问题,我从一个查询,其中每行是类似以下的输出:

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

上面的模式是:

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

什么我想do是以CSV格式生成输出,以便它可以轻松地插入到数据库中,例如把上述分为:

570349476329862,66638102521614253348753,3

我觉得我要压平袋,但尽管这种“编译”它不运行。

任何想法欢迎。

谢谢

+0

你可以看看DataFu的'FirstTupleFromBag()'http://datafu.incubator.apache.org/docs/datafu/1.1.0/datafu/pig/bags/ FirstTupleFromBag.html – gobrewers14

+0

它在每个包里总是被重复的元组吗?那么是不是真的只想从两个行李箱中拾取第一个元组并从中提取值? –

+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函数相比,您可以使用内置函数进行比较。

我希望这有助于