Ошибка при использовании функции "Collect_List()" в улье

Всякий раз, когда я запускаю функцию "collect_list" в Hive, она всегда выдает ошибку:

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

Я запускаю запрос на терминале улья и вот мой запрос:

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

Я хочу результат, как это:

id    value
1       A, B
2       C
3       D

Нужно ли что-то настраивать перед использованием функции collect_list? Спасибо.

2 ответа

Вы должны группировать по идентификатору

SELECT collect_list(значение) ОТ чего-то группировать по идентификатору;

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;
Другие вопросы по тегам