尝试从Spark访问S3时出现400错误请求

时间:2018-02-20 07:00:14

标签: apache-spark amazon-s3 amazon-emr

我试图从us-east-2(俄亥俄州)的一个桶中读取s3a文件,我收到400 Bad Request响应:

com.amazonaws.services.s3.model.AmazonS3Exception: Status Code: 400, AWS Service: Amazon S3, AWS Request ID: [removed], AWS Error Code: null, AWS Error Message: Bad Request, S3 Extended Request ID: [removed]

由于我的代码适用于悉尼的另一个存储桶,它似乎是一个签名的API版本问题(俄亥俄州仅支持4个,悉尼支持2个和4个)。所以我尝试通过将其添加到spark-submit来设置端点,如其他帖子中所建议的那样:

--conf "spark.hadoop.fs.s3a.endpoint=s3.us-east-2.amazonaws.com"

但这并没有任何区别。我还尝试将其添加到conf文件并使用--properties-file [file_path]

传递它
spark.hadoop.fs.s3a.endpoint                    s3.us-east-2.amazonaws.com

没有区别。我仍然得到俄亥俄州的相同错误(由于显而易见的原因,它不再与悉尼合作)。

1 个答案:

答案 0 :(得分:1)

在代码中添加以下行:

System.setProperty("com.amazonaws.services.s3.enableV4", "true")