1

我正在使用 IBM 对象存储(类似于 AWS S3)来存储数据。IBM 的对象存储实现了 S3 api。可以修改Spark 的 Hadoop 配置以允许它连接到 Amazon S3 。

我正在尝试(在 pyspark 中)通过将端点设置为指向 IBM 而不是 Amazon 来访问我的数据。

sc._jsc.hadoopConfiguration().set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "s3-api.us-geo.objectstorage.service.networklayer.com")
sc._jsc.hadoopConfiguration().set('fs.s3a.access.key', '<my_key>')
sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "<secret_key>")

引发错误:

An error occurred while calling o131.partitions.
: com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: 7F46A12CDBB841AA)

注意“服务:Amazon S3;” 这让我假设 SDK 仍然指向 AWS。这可以改变吗?

4

1 回答 1

0

您指定的端点是“私有”端点,适用于在 IBM Cloud/Softlayer 数据中心网络中发送请求的工作负载。

如果您尝试通过公共 Internet 连接到对象存储,则需要使用不同的端点:s3-api.us-geo.objectstorage.softlayer.net. 更多信息可以在(诚然正在进行的)公开试验文档中找到

如果这不能解决问题,请告诉我 - 如果它是兼容性缺陷,我想确保它得到解决。

于 2016-11-11T19:07:32.703 回答