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

luc*_*one 5 csv hive insert save create-table

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

根据 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 ;
Run Code Online (Sandbox Code Playgroud)

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

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

我的查询有什么问题?如何在格式良好的文本文件中获取查询结果(我想编写一个返回多个此类文件的配置单元脚本。如果我什至可以从配置单元中指定文件的名称,那就太好了)。

K S*_*hin 2

添加评论作为答案

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

      set hive.exec.compress.output=false
Run Code Online (Sandbox Code Playgroud)

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

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