在PIG中提取包中的匹配元组

时间:2014-02-11 19:35:57

标签: hadoop hdfs apache-pig

我在包里有原始数据:

{(id,35821),(lang,en-US),(pf_1,us)}
{(path,/ybe/wer),(id,23481),(lang,en-US),(intl,us),(pf_1,yahoo),(pf_3,test)}
{(id,98234),(lang,ir-IL),(pf_1,il),(pf_2,werasdf|dfsas)}

如何提取列1与id和pf _ *?

匹配的元组

我想要的输出:

{(id,35821),(pf_1,us)}
{(id,23481),(pf_1,yahoo),(pf_3,test)}
{(id,98234),(pf_1,il),(pf_2,werasdf|dfsas)}

任何建议都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

为了处理内袋(一种格式为OUTER_BAG: {INNER_BAG: {(e:int)}}的袋子),你将不得不使用nested FOREACH。这将允许您通过内袋中的元组执行操作。

例如,您将要执行以下操作:

-- A: {inner_bag: {(val1: chararray, val2: chararray)}}

B = FOREACH A {
        filtered_bags = FILTER inner_bag BY val1 matches '^(id|pf_).*' ;
    GENERATE filtered_bags ;
}