无法在Amazon S3存储桶中下载或读取Hive输出

时间:2013-04-21 02:01:23

标签: amazon-web-services amazon-s3 hive emr

我是AWS和Hive的新手,我正在尝试使用Hive来分析Google Ngrams数据。我试图在S3存储桶中将表格保存为制表符分隔的CSV,但现在我不知道如何查看或下载它以查看我的作业是否正确执行。

我用来创建表的查询是

CREATE EXTERNAL TABLE test_table2 (
 gram string,
 year int,
 occurrences bigint,
 pages bigint,
 books bigint
 )
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 's3://mybucket/sub-bucket/test-table2.txt';

然后我在表格中填写了数据:

INSERT OVERWRITE TABLE test_table2
SELECT
 gram,
 year,
 occurrences,
 pages,
 books
FROM
 eng1m_5grams_normed
WHERE
 gram = 'early bird gets the worm';

查询运行正常,我认为一切正常。但是,当我在线管理S3 Management Console中导航到我的存储桶时,文本文件显示为包含大量文件的文件夹。这些文件具有长十六进制字符名称,大小为0字节。

这只是表示为目录的文本文件吗?有没有办法查看或下载文件以查看我的查询是否有效?我试图将目录公开,以便我可以下载它,但“操作”下拉菜单中的下载按钮仍然是灰色的。

2 个答案:

答案 0 :(得分:0)

发生的事情是,很少有行可能符合where子句中的谓词。所以很少(或没有)行被选中并被发送到输出中(因此零大小的文件)。 EMR没有提供一种简单的方法来下载查询结果。

答案 1 :(得分:0)

在Hive / S3中,将S3目录视为表。这些目录中包含的文件是那些表(即行)的内容。你在目录中有多个文件的原因是因为多个reducer正在写“table”。

S3 Browser是一个使用S3的非常好的工具。