Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 400尝试从Spark访问S3时请求错误_Apache Spark_Amazon S3_Amazon Emr - Fatal编程技术网

Apache spark 400尝试从Spark访问S3时请求错误

Apache spark 400尝试从Spark访问S3时请求错误,apache-spark,amazon-s3,amazon-emr,Apache Spark,Amazon S3,Amazon Emr,我正试图从us-east-2(俄亥俄州)的一个桶中读取一个文件thorughs3a,我收到了400个错误的请求响应: 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 Reque

我正试图从us-east-2(俄亥俄州)的一个桶中读取一个文件thorugh
s3a
,我收到了400个错误的请求响应:

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]
由于我的代码与悉尼的另一个bucket一起工作,这似乎是一个签名API版本问题(俄亥俄州只支持4,悉尼支持2和4)。因此,我尝试设置端点,将其添加到
spark submit
,如其他帖子所建议:

--conf "spark.hadoop.fs.s3a.endpoint=s3.us-east-2.amazonaws.com"
但那没什么区别。我还尝试将其添加到conf文件中,并使用
--properties file[file\u path]

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

没有区别。对于俄亥俄州,我仍然会遇到同样的错误(由于明显的原因,它不再适用于Sydney)。

在代码中添加以下行:

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

这是hadoop aws的问题。为什么要删除hadoop标签?也许会有帮助。看起来您需要显式启用V4签名。我升级到Hadoop 3.0.0,就这样完成了。所以我认为这是一个Hadoop bug。