Scala 无法从Spark连接到S3-AmazonS3异常状态代码:400
我正在尝试从PC上运行的Spark连接到S3存储桶:Scala 无法从Spark连接到S3-AmazonS3异常状态代码:400,scala,amazon-web-services,apache-spark,hadoop,amazon-s3,Scala,Amazon Web Services,Apache Spark,Hadoop,Amazon S3,我正在尝试从PC上运行的Spark连接到S3存储桶: val spark = SparkSession .builder .appName("S3Client") .config("spark.master", "local") .getOrCreate() val sc = spark.sparkContext; sc.hadoopConfiguration.set("fs.s3a.access.key", ACCESS_KEY)
val spark = SparkSession
.builder
.appName("S3Client")
.config("spark.master", "local")
.getOrCreate()
val sc = spark.sparkContext;
sc.hadoopConfiguration.set("fs.s3a.access.key", ACCESS_KEY)
sc.hadoopConfiguration.set("fs.s3a.secret.key", SECRET_KEY)
val txtFile = sc.textFile("s3a://bucket-name/folder/file.txt")
val contents = txtFile.collect();
但得到以下例外情况:
主线程中的异常
com.amazonaws.services.s3.model.amazons3异常:状态代码:400,
AWS服务:Amazon S3,AWS请求ID:07A7BDC9135BCC84,AWS错误
代码:null,AWS错误消息:错误请求,S3扩展请求ID:
6ly2vhZ2mAJdQl5UZ/qudiffn1hkhrzirw6h441oosgz+PLIvLW2fXsZ9xmd8cuBrNHCdh8UPE=
我见过,但对我没有帮助
编辑:
正如扎克建议的那样,我补充道:
sc.hadoopConfiguration.set("fs.s3a.endpoint", "s3.eu-central-1.amazonaws.com")
但我还是得到了同样的例外。还有
请尝试以下配置:
val spark = SparkSession
.builder
.appName("S3Client")
.config("spark.master", "local")
.getOrCreate()
val sc = spark.sparkContext;
sc.hadoopConfiguration.set("fs.s3a.access.key", ACCESS_KEY)
sc.hadoopConfiguration.set("fs.s3a.secret.key", SECRET_KEY)
sc.hadoopConfiguration.set("fs.s3a.endpoint", "s3.us-east-1.amazonaws.com")
val txtFile = sc.textFile("s3a://s3a://bucket-name/folder/file.txt")
val contents = txtFile.collect();
我相信您的问题是因为您没有在配置集中指定端点。将us-east-1分配给您使用的任何地区。我已经解决了这个问题 我的目标是法兰克福的一个地区,该地区需要使用第4版的签名 我已经将S3存储桶的区域更改为爱尔兰,现在它可以工作了。根据,一些区域仅支持签名版本4,需要添加以下配置:
--conf "spark.executor.extraJavaOptions=-Dcom.amazonaws.services.s3.enableV4=true"
及
这对我来说很有用这就是一切…不需要其他出口等
sparkContext._jsc.hadoopConfiguration().set("fs.s3a.access.key", AWS_KEY)
sparkContext._jsc.hadoopConfiguration().set("fs.s3a.secret.key", AWS_SECRET)
sparkContext._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "s3.us-east-2.amazonaws.com")
要运行:
spark-submit --conf spark.driver.extraJavaOptions='-Dcom.amazonaws.services.s3.enableV4' --conf spark.executor.extraJavaOptions='-Dcom.amazonaws.services.s3.enableV4' --packages org.apache.hadoop:hadoop-aws:2.7.1 spark_read_s3.py
我已经在我的例子中添加了端点,区域是eu-central-1,但我仍然得到相同的结果exception@Alon-你解决问题了吗?你能提供solution@LearnHadoop是的,我有,你可以在这里看到我接受的答案。你能尝试添加sc.hadoopConfiguration.setfs.s3a.impl,org.apache.hadoop.fs.s3a.S3AFileSystem吗
spark-submit --conf spark.driver.extraJavaOptions='-Dcom.amazonaws.services.s3.enableV4' --conf spark.executor.extraJavaOptions='-Dcom.amazonaws.services.s3.enableV4' --packages org.apache.hadoop:hadoop-aws:2.7.1 spark_read_s3.py