我们希望将配置单元查询的结果放入CSV文件.我认为命令应该是这样的:
insert overwrite directory '/home/output.csv' select books from table;
当我运行它时,它显示它已成功完成,但我始终找不到该文件.我如何找到此文件,或者我应该以不同的方式提取数据?
我们希望将配置单元查询的结果放入CSV文件.我认为命令应该是这样的:
insert overwrite directory '/home/output.csv' select books from table;
当我运行它时,它显示它已成功完成,但我始终找不到该文件.我如何找到此文件,或者我应该以不同的方式提取数据?
虽然可以使用INSERT OVERWRITE
将数据从配置单元中取出,但对于您的特定情况,这可能不是最好的方法.首先让我解释一下INSERT OVERWRITE
的作用,然后我将描述我用来从配置单元表格中获取TSV文件的方法.
根据the manual,您的查询将把数据存储在HDFS中的一个目录中.格式将不是CSV.
写入文件系统的数据被序列化为文本,列之间用^A分隔,行之间用换行符分隔.如果任何列不是基元类型,那么这些列将被序列化为JSON格式.
稍加修改(添加关键字LOCAL
)就会将数据存储在本地目录中.
INSERT OVERWRITE LOCAL DIRECTORY '/home/lvermeer/temp' select books from table;
当我运行一个类似的查询时,输出是这样的.
[lvermeer@hadoop temp]$ ll
total 4
-rwxr-xr-x 1 lvermeer users 811 Aug 9 09:21 000000_0
[lvermeer@hadoop temp]$ head 000000_0
"row1""col1"1234"col3"1234FALSE
"row2""col1"5678"col3"5678TRUE
就我个人而言,我通常通过命令行上的配置单元直接运行我的查询,并将其导入本地文件,如下所示:
hive -e 'select books from table' > /home/lvermeer/temp.tsv
这给了我一个标签分隔的文件,我可以使用.希望这对你也有用.
基于this patch-3682,我怀疑在使用蜂巢0.11时有更好的解决方案,但我无法亲自测试这一点.新语法应该允许以下内容.
INSERT OVERWRITE LOCAL DIRECTORY '/home/lvermeer/temp'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
select books from table;
希望有帮助.