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



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

遵循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的文件,当我打开它时,它似乎是一个二进制文件,而不是文本文件。

我的查询出了什么问题?如何在格式良好的文本文件中获得查询结果(我想写一个返回几个这样的文件的配置单元脚本。如果我甚至可以在配置单元中指定文件名,那将是一个额外的奖励)。

添加注释作为答案

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

      set hive.exec.compress.output=false

曾经快速压缩的文件由于其编码结构而无法解压缩。

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

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

最新更新