2012-06-20 96 views
3

我正在使用Hadoop处理Google图书ngrams,这些ngrams在Hadoop序列文件中存储在Amazon S3中。无法从Hadoop访问公共S3存储桶

Hadoop包含从S3(使用S3存储桶作为虚拟“文件系统”)读取数据的功能,只需在文件名上指定s3://或s3n://协议即可。

不幸的是,它要求您设置AWS访问和密钥。由于我想读取的桶是公开的,我没有任何使用密钥。如果我使用我自己的密钥,我无法读取ngrams存储桶(因为它不属于我的帐户)。

如何从Hadoop使用存储在公共S3存储桶中的文件,而无需自己重新托管文件(这将会非常昂贵,因为有几TB数据)?

+0

你有没有想过这个呢? –

+0

@AlexDean,我最终放弃了,并写了我自己的RecordReader,通过HTTP淹没在文件中。我从来没有让默认阅读器与S3一起工作。 – levand

+0

啊,惭愧,谢谢你让我知道@levand。我发现即使S3DistCp也有这个限制,这看起来真的很愚蠢。 –

回答

0

如果数据是公开的,您将不需要AWS访问或密钥,因为您不会使用s3n://变体。相反,你将使用公共URL的变体,这将http://*.s3.amazonaws.com/*

如果公共网址无法启动,您可以尝试只传递一个空字符串为每个AWS访问和秘密密钥,并看看会发生什么

+2

不幸的是,不幸的是,Hadoop无法像使用S3一样在HTTP协议上安装它的“文件系统”。 – levand

+0

我注意到这个页面链接在Amazon网页的底部,用于NGrams数据集。它使用HIVE来处理该数据集。 HIVE只是一个位于Hadoop之上的框架,它使用与hadoop相同的信用。 http://aws.amazon.com/articles/5249664154115844 – Huckle

+0

看起来像这是一个迄今尚未解决的限制。有JIRA票吗? – tribbloid