从Pyspark调用AWS S3存储桶时出错。 AWS错误代码:null,AWS错误消息:错误的请求

时间:2020-05-18 10:33:24

标签: amazon-web-services apache-spark amazon-s3 pyspark

错误是Py4JJavaError:调用o411.csv时发生错误。

com.amazonaws.services.s3.model.AmazonS3Exception:状态代码:400,AWS服务:Amazon S3,AWS请求ID:fsdfewffsd,AWS错误代码:null,AWS错误消息:错误请求,S3扩展请求ID

我正在使用spark 3.0预览版。 我使用pyspark --packages=org.apache.hadoop:hadoop-aws:2.7.3命令开始了pyspark会话。

我在下面尝试了以下代码

hadoop_conf = spark._jsc.hadoopConfiguration()
hadoop_conf.set("fs.s3a.impl","org.apache.hadoop.fs.s3a.S3AFileSystem")
hadoop_conf.set("com.amazonaws.services.s3.enableV4", "true")
hadoop_conf.set("fs.s3a.endpoint", "s3.us-east-2.amazonaws.com")    hadoop_conf.set("fs.s3a.aws.credentials.provider","org.apache.hadoop.fs.s3a.BasicAWSCredentialsProvider")
hadoop_conf.set("fs.s3a.access.key",ACCESS_KEY)
hadoop_conf.set("fs.s3a.secret.key",SECRET_KEY)

接着是对存储桶的调用,下面的行将引发错误。

sdf = spark.read.csv("s3a://aai-team/neighbourhoods.csv")

1 个答案:

答案 0 :(得分:0)

我今天有完全一样的问题。 刚刚用setSystemProperty->

解决了
spark = SparkSession.builder.appName("app").getOrCreate()
sc=spark.sparkContext
sc.setSystemProperty("com.amazonaws.services.s3.enableV4", "true")

然后像你一样的hadoop_conf。