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

标签 hive mapreduce hiveql reduce hive-configuration

我想将 hive 查询结果导出到带有管道分隔符的单个本地文件。

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

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

最佳答案

尝试使用这些设置在单个 reducer 上执行 ORDER BY:

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

或者尝试手动设置reducer的数量:

set mapred.reduce.tasks=1;

关于hive - 如何将hive查询结果导出到单个本地文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64068082/

相关文章:

SQL - 带有dense_rank()的窗口函数

hadoop - 在没有HDFS的情况下是否可以在伪分布式运行中运行Hadoop?

sql - Hive SQL - 如何从每个人中删除最大(日期)?

Hadoop 在重新启动时删除 MapReduce 历史记录

scala - Spark 分区 Hive 表

Hadoop - 获取数据的最有效方式

hive 创建表文件名 000000_0?

hadoop - 如何将.dat文件加载到配置单元或hdfs?

hadoop - 在配置单元中,分区快速还是存储桶快速?

linux - root 或非 root 用户的 HDFS start-all.sh