【问题标题】:Apache Pig Group by and Filter if multiple values exist?如果存在多个值,Apache Pig Group by 和过滤器?
【发布时间】:2021-05-26 13:57:04
【问题描述】:

我正在尝试对具有相同 ID 的多行进行分组,然后检查组中的每个元组是否包含两个值,例如:

(10461 , 55 )
(10435 , 17 )
(10435 , 11 )
(10435 , 72 )
(10437 , 11 )
(10830 , 72 )

在我将其分组后:groupedData = group dataPoints by data_id;

我明白了:

(10461 ,{(10461 , 55)})


(10435 ,{(10435 , 17),(10435 , 11),(10435 , 72)})

如果包含1711,我想过滤并获取10435 的值。

【问题讨论】:

    标签: apache-pig apache-pig-grunt


    【解决方案1】:

    您可以使用嵌套的FOREACH 过滤袋子,然后检查空袋子。请注意,我不确定您用数字(55、17、11 等)将字段称为什么,所以这是下面代码中的 value - 根据需要替换!

    filteredBags = FOREACH groupedData {
        seventeen = FILTER dataPoints BY value == 17;
        eleven = FILTER dataPoints BY value == 11;
        GENERATE
        group AS data_id,
        seventeen,
        eleven;
    }
    
    nonNullBags = FILTER filteredBags BY NOT IsEmpty(seventeen) AND NOT IsEmpty(eleven);
    
    finalIds = FOREACH nonNullBags GENERATE data_id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多