我试图从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
没有区别。我仍然得到俄亥俄州的相同错误(由于显而易见的原因,它不再与悉尼合作)。
答案 0 :(得分:1)
在代码中添加以下行:
System.setProperty("com.amazonaws.services.s3.enableV4", "true")