Как экспортировать результат запроса улья в один локальный файл?
Я хочу экспортировать результат запроса куста в один локальный файл с разделителем каналов.
Запрос 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;