如何从配置单元查询创建制表符分隔文件?

时间:2014-10-14 07:17:05

标签: insert save hive create-table tsv

我正在尝试从配置单元查询中创建一个制表符分隔值。

在Apache Hive wiki之后,我将查询编写为:

INSERT OVERWRITE LOCAL DIRECTORY '/home/luca/query_results/'
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY  '\t' ESCAPED BY '"' LINES TERMINATED BY '\n' 
STORED AS TEXTFILE
SELECT * FROM mytable ;

(请注意,真正的查询非常复杂,我知道在这个简单的例子中我可以使用hive -e "Select * from mytable > output)。

查询似乎有效,但在query_results目录中,我找到一个扩展名为.snappy的文件,当我打开它时,它似乎是一个二进制文件,而不是文本文件。

我的查询有什么问题?如何在格式良好的文本文件中获取查询结果(我想编写一个返回多个此类文件的hive脚本。如果我甚至可以在hive中指定文件的名称,那将是一个奖励)。< / p>

2 个答案:

答案 0 :(得分:2)

将评论添加为答案

可以通过取消设置压缩来解决.snappy文件问题。 使用以下内容:

      set hive.exec.compress.output=false

一次snappy压缩文件无法解压缩,因为它的编码结构。

上述压缩属性可以在hive-site.xml中永久设置,也可以在每次运行插入查询时手动设置

答案 1 :(得分:0)

要打开.snappy扩展名,我们需要在查询中使用文本语法。