在配置单元中使用“collect\u list()”函数时出错

bxjv4tth  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(349)

每当我在配置单元上运行函数“collect\u 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\u list函数之前需要配置什么吗?谢谢您。

okxuctiv

okxuctiv1#

collect\u list使用arraylist,因此数据将保持与添加时相同的顺序,为此,您需要在子查询中使用sort by子句,不要使用order by,这将导致您的查询以非分布式方式执行。

SELECT id, COLLECT_LIST(value)
FROM (SELECT * FROM something SORT BY id, value DESC) x
GROUP BY id;
cclgggtu

cclgggtu2#

您应该按id分组
选择collect\u list(value)from something group by id;

相关问题