将Apache Spark与兼容S3的本地对象存储一起使用

时间:2019-07-29 03:29:52

标签: apache-spark object-storage

我正在尝试使用与s3 sdk / api完全兼容的本地对象存储来运行简单的Apache Spark(Cloudera)读取操作。但是我似乎无法弄清楚如何使Spark理解我试图访问本地 S3存储桶而不是远程AWS / S3。

这就是我尝试过的...

pyspark2 --conf spark.hadoop.hadoop.security.credential.provider.path=jceks://hdfs/user/myusername/awskeyfile.jceks --conf fs.s3a.endpoint=https://myenvironment.domain.com
df = spark.read.parquet("s3a://mybucket/path1/")

错误消息...

Caused by: com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to mybucket.s3.amazonaws.com:443 [mybucket.s3.amazonaws.com/12.345.678.90] failed: Connection refused (Connection refused)

我可以在命令行上列出本地存储桶内容,而不会出现问题,所以我知道我的访问/保密键正确无误,但我需要让Spark理解 not 才能接触到AWS尝试解决存储区网址。

谢谢。

1 个答案:

答案 0 :(得分:0)

HDP文档Working with third party object stores中对此进行了介绍。

CDH的设置相同。

它下来了

  • 端点fs.s3a.endpoint =主机名
  • 禁用DNS到存储桶映射fs.s3a.path.style.access = true
  • 玩签名选项。

您还可以打开其他一些开关以获得更好的兼容性;他们在那些文档中。

您可能会发现Cloudstore storediag命令很有用。