我有桌子:
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
答案 0 :(得分:0)
在BrickHouse http://github.com/klout/brickhouse
中使用“收集”UDF对于推荐,您可以查看对此Hive - grouping rows into map
的回答