如何将hive table / select查询导出到csv?我试过下面的命令。但它将输出创建为多个文件。有更好的方法吗?
INSERT OVERWRITE LOCAL DIRECTORY '/mapr/mapr011/user/output/'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
SELECT fied1,field2,field3 FROM table1
答案 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