Ошибка при использовании функции "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;