如何将hive的查询结果导出到单个本地文件?

k5hmc34c  于 2021-04-03  发布在  Hive
关注(0)|答案(1)|浏览(1192)

我想把hive的查询结果导出到一个带管道分隔符的本地文件。
hive查询中包含了排序子句。
我试过以下的解决方案。
解决方案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命令删除空行,这需要很长的时间。
有没有其他有效的方法来实现这个目标?

smtd7mpg

smtd7mpg1#

试着用这些设置来执行单个reducers的order by

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

或尝试手动设置reducers的数量。

set mapred.reduce.tasks=1;

相关问题