Как экспортировать результат запроса улья в один локальный файл?

Я хочу экспортировать результат запроса куста в один локальный файл с разделителем каналов.

Запрос Hive содержит предложение order by.

Я пробовал решения ниже.

Решение1:

hive -e 'insert overwrite local directory '/problem1/solution' fields terminated by '|' select * from table_name order by rec_date'

Это решение создает несколько файлов. После слияния файлов он теряет порядок данных.

Решение2:

beeline -u 'jdbc:hive2://server_ip:10000/db_name' --silent --outputformat=dsv --delimiterForDSV='|' -e 'select * from table_name order by rec_date' > /problem1/solution

Это решение создает один файл, но он имеет пустые 2 строки вверху и 2 строки внизу.

Я удаляю пустые строки с помощью команды sed. На это уходит очень много времени.

Есть ли другой эффективный способ добиться этого?

1 ответ

Решение

Попробуйте эти настройки для выполнения ORDER BY на одном редукторе:

set hive.optimize.sampling.orderby=false; --disable parallel ORDER BY

Или попробуйте установить количество редукторов вручную:

set mapred.reduce.tasks=1;
Другие вопросы по тегам