我正在尝试使用与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尝试解决存储区网址。
谢谢。
答案 0 :(得分:0)
HDP文档Working with third party object stores中对此进行了介绍。
CDH的设置相同。
它下来了
fs.s3a.endpoint
=主机名fs.s3a.path.style.access
= true 您还可以打开其他一些开关以获得更好的兼容性;他们在那些文档中。
您可能会发现Cloudstore storediag
命令很有用。