使用hive sql将数据导出到csv

时间:2017-08-23 04:32:25

标签: hadoop hive

如何将hive table / select查询导出到csv?我试过下面的命令。但它将输出创建为多个文件。有更好的方法吗?

INSERT OVERWRITE LOCAL DIRECTORY '/mapr/mapr011/user/output/'
                    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
SELECT fied1,field2,field3 FROM table1

2 个答案:

答案 0 :(得分:0)

Hive会创建尽可能多的文件,因为正在运行许多Reducer。这是完全平行的。 如果你想要单个文件,那么添加order by以强制在单个reducer上运行或尝试增加每个reducer配置参数的字节数:

SELECT fied1,field2,field3 FROM table1 order by fied1

OR

set hive.exec.reducers.bytes.per.reducer=67108864; --increase accordingly

您也可以尝试合并文件:

set hive.merge.smallfiles.avgsize=500000000;
set hive.merge.size.per.task=500000000;
set hive.merge.mapredfiles=true;

此外,您可以在从hadoop获取文件后使用cat连接文件。

答案 1 :(得分:0)

您可以使用hadoop fs -cat / hdfspath> some.csv

命令并在一个文件中获取输出。

如果需要Header,则可以将SED与hive一起使用。请参阅此链接,其中讨论了将Hive导出为CSV的各种选项

https://medium.com/@gchandra/best-way-to-export-hive-table-to-csv-file-326063f0f229