在pig的包中提取匹配元组

kjthegm6  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(396)

我的袋子里有原始数据:

{(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)}

如有任何建议,将不胜感激。谢谢!

ergxz8rk

ergxz8rk1#

为了处理内袋(格式如下的袋 OUTER_BAG: {INNER_BAG: {(e:int)}} )你必须使用嵌套的 FOREACH . 这将允许您对内部包中的元组执行操作。
例如,您将要执行以下操作:

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

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

相关问题