0

谷歌以“互操作性模式”的形式提供对其云存储服务的“s3 兼容”访问。

我们在一个封闭的网络上运行 spark,我们通过代理连接到互联网。Google 自己的用于云存储的 hadoop 连接器没有任何代理配置设置,因此我们必须使用内置的 spark s3a 连接器,它可以让您设置使用正在通话的代理所需设置的所有属性通过 core-site.xml 连接到 Internet 和相应的 google URL 端点:

<!-- example xml -->
<name>fs.s3a.access.key</name>
<value>....</value>

<name>fs.s3a.secret.key</name>
<value>....</value>

<name>fs.s3a.endpoint</name>
<value>https://storage.googleapis.com</value>

<name>fs.s3a.connection.ssl.enabled</name>
<value>True</value>

<name>fs.s3a.proxy.host</name>
<value>proxyhost</value>

<name>fs.s3a.proxy.port</name>
<value>12345</value>

但是,与boto不同,它可以在我们的环境中使用类似设置的代理正常工作,Spark 在尝试使用我们的代理时抛出 com.cloudera.com.amazonaws.services.s3.model.AmazonS3Exception 如下所示:

 com.cloudera.com.amazonaws.services.s3.model.AmazonS3Exception: 
   The provided security credentials are not valid.
   (Service: Amazon S3; Status Code: 403; Error Code: InvalidSecurity; 
   Request ID: null), S3 Extended Request ID: null

我在这里做错了什么,或者这根本不受支持?

同样,我很好奇这个版本的 spark 是否甚至使用 jets3t 库?我发现相互矛盾的 信息

4

1 回答 1

0

我最终想通了。您必须从类路径中删除一些特定的违规 jar。我已经详细说明了我的解决方案,以供将来使用。:)

https://gist.github.com/chicagobuss/6557dbf1ad97e5a09709

于 2016-05-12T13:24:56.897 回答