在Hive中产生大结果的最佳方法是什么?

时间:2013-12-20 18:24:03

标签: hadoop hive hdinsight

我一直在尝试使用较大的结果集来运行一些Hive查询。我的常规方法是通过WebHCat API提交作业,并从生成的stdout文件中读取结果,或者只是在控制台上运行配置单元并将stdout传递给文件。但是,如果结果很大(使用了多个reducer),则stdout为空白或截断。

我目前的解决方案是从结果CREATE TABLE FROM SELECT创建一个新表格,这会引入一个额外的步骤,如果我不想保留结果集,请在表格之后清理。

有没有人有更好的方法来捕获这样的Hive查询的所有结果?

1 个答案:

答案 0 :(得分:1)

您可以将数据直接写入hdfs或本地文件系统上的目录,然后根据文件执行所需操作。例如,要生成CSV文件:

INSERT OVERWRITE DIRECTORY '/hive/output/folder'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
SELECT ... FROM ...;

这与CREATE TABLE FROM SELECT基本相同,但您不必清理表格。这是完整的文档:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Writingdataintothefilesystemfromqueries