0

每当我在 Hive 上运行函数“collect_list”时,它总是会抛出一个错误:

Query ID = xxxxx
Total jobs = 1
Launching Job 1 out of 1
Failed to get session
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask

这是示例:

数据:

id    value
1       A
1       B
2       C
3       D

我在 hive 的终端上运行查询,这是我的查询:

SELECT id, collect_list(value) FROM something GROUP BY id;

我想要这样的结果:

id    value
1       A, B
2       C
3       D

在使用 collect_list 功能之前我需要配置一些东西吗?谢谢你。

4

2 回答 2

0

Collect_list 使用 ArrayList,因此数据将保持与添加时相同的顺序,为此,您需要在子查询中使用 SORT BY 子句,不要使用 ORDER BY,它会导致您的查询以非-分布式方式。

SELECT id, COLLECT_LIST(value)
FROM (SELECT * FROM something SORT BY id, value DESC) x
GROUP BY id;
于 2017-04-21T05:48:50.497 回答
0

你应该按 id 分组

SELECT collect_list(value) FROM something group by id;

于 2017-04-20T20:59:47.193 回答