gpt4 book ai didi

sql - Hive 选择数据到结构数组中

转载 作者:可可西里 更新时间:2023-11-01 14:42:34 24 4
gpt4 key购买 nike

我正试图在 Hive 中找出一种方法来从平面源中选择数据并将其输出到命名结构的数组中。这是我正在寻找的示例...

示例数据:

house_id,first_name,last_name
1,bob,jones
1,jenny,jones
2,sally,johnson
3,john,smith
3,barb,smith

期望的输出:

1   [{"first_name":"bob","last_name":"jones"},{"first_name":"jenny","last_name":"jones"}]
2 [{"first_name":"sally","last_name":"johnson"}]
3 [{"first_name":"john","last_name":"smith"},{"first_name":"barb","last_name":"smith"}]

我试过 collect_list 和 collect_set 但它们只允许原始数据类型。关于如何在 Hive 中解决这个问题有什么想法吗?

最佳答案

我会用这个 jar ,它是 collect 的更好实现(并采用复杂的数据类型)。

查询:

add jar /path/to/jar/brickhouse-0.7.1.jar;
create temporary function collect as 'brickhouse.udf.collect.CollectUDAF';

select house_id
, collect(named_struct("first_name", first_name, "last_name", last_name))
from db.table
group by house_id

输出:

1   [{"first_name":"bob","last_name":"jones"}, {"first_name":"jenny","last_name":"jones"}]
2 [{"first_name":"sally","last_name":"johnson"}]
3 [{"first_name":"john","last_name":"smith"},{"first_name":"barb","last_name":"smith"}]

关于sql - Hive 选择数据到结构数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com