谷歌以“互操作性模式”的形式提供对其云存储服务的“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
我在这里做错了什么,或者这根本不受支持?