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

标签 sql hadoop hive apache-pig hiveql

我正试图在 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/

相关文章:

mysql - 选择所有相关产品

hadoop - Hadoop中的FileSplit之类的拆分会不会改变 block ?

hadoop - 处理 hadoop/hive 中损坏的 gzip 文件

sql - PostgreSQL 查找按日期分组的前 N ​​行

python - SQL - 如何随机选择有序子集?

c# - 在 C# 上读取两个 MySql 查询

hadoop - oozie工作流程的最大限制

sql - 如何编写配置单元 ql 查询以合并 2 个表中的列?

hadoop - Hive - 分桶和分区

hadoop - 从Hortonworks沙箱运行时出现配置单元错误