0

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

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

有没有人有更好的方法来捕获来自此类 Hive 查询的所有结果?

4

1 回答 1

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

于 2013-12-20T19:17:25.890 回答