如何在pig/hive中基于关键子集进行聚合?

ulmd4ohb  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(383)

我有一个数据集,其中emp\u id、org\u id和res\u id是关键列
输入数据为-

emp_id | org_id | res_id | emp_sal
123    | 345    | 678    | 10000
123    |        | 678    | 20000
123    | 345    |        | 30000
       | 345    | 678    | 10000
103    | 305    | 608    | 40000
103    |        |        | 50000

我有一个要求,如果剩下的记录是complete key的子集,我需要聚合empèsal。例如,“123 | 345 | 678 |”在输入数据集中还有3个子集。
预期输出为-

emp_id | org_id | res_id | emp_sal
123    | 345    | 678    | 70000
103    | 305    | 608    | 90000

如何计算pig中的聚合?

htzpubme

htzpubme1#

SELECT c.emp_id, 
       c.org_id, 
       c.res_id, 
       Sum(d.emp_sal) 
FROM   (SELECT DISTINCT emp_id, 
                        org_id, 
                        res_id 
        FROM   emptest 
        WHERE  emp_id IS NOT NULL 
               AND org_id IS NOT NULL 
               AND res_id IS NOT NULL) AS c, 
       emptest AS d 
WHERE  d.emp_id = c.emp_id 
        OR d.org_id = c.org_id 
        OR d.res_id = c.res_id 
GROUP  BY c.emp_id, 
          c.org_id, 
          c.res_id;

上面的Hive查询可以帮助你。

相关问题