Hive聚合(并集)函数,用于获取具有json值的映射

时间:2015-12-03 14:00:20

标签: json hive union brickhouse

我有桌子:

id, name, value
1, 'A', "{"key_a": 1, "key_b": 2}"
1, 'B', "{"key_a": 2, "key_b": 2}"
1, 'C', "{"key_a": 2, "key_b": 3}"

我需要将这些数据汇总到id:

id, json
1, "{'A': {"key_a": 1, "key_b": 2}, 'B': {"key_a": 2, "key_b": 2}, 'C': {"key_a": 2, "key_b": 3}}

我尝试使用bh_union函数,但它不起作用。 除了编写python reduce脚本之外还有其他选择吗?

我的代码如下所示:

CREATE TEMPORARY FUNCTION bh_union AS 'brickhouse.udf.collect.UnionUDAF'; 

SELECT id, bh_union(map(name, value)) json
FROM (
    SELECT 
        id, 
        name, 
        to_json(map('A', SUM(`count`), 'B', COUNT(`count`))) value
    FROM table_name
    GROUP BY id, name
) a
GROUP BY id

1 个答案:

答案 0 :(得分:0)

在BrickHouse http://github.com/klout/brickhouse

中使用“收集”UDF

对于推荐,您可以查看对此Hive - grouping rows into map

的回答