如何将配置单元查询结果导出到单个本地文件?

问题描述

我想将配置单元查询结果导出到带有管道定界符的单个本地文件中。

配置单元查询包含按子句排序。

我尝试了以下解决方案。

解决方案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 命令删除空行。需要很长时间。

还有其他有效的方法可以实现这一目标吗?

解决方法

尝试以下设置以在单个化简器上执行ORDER BY:

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

或尝试手动设置减速器数量:

set mapred.reduce.tasks=1;