fs.s3a.aws.credentials.提供java.lang.ClassNotFoundE



我正在尝试使用spark使用以下依赖关系和配置从S3读取数据:


libraryDependencies += "org.apache.spark" %% "spark-core" % "3.2.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.2.0"
libraryDependencies += "org.apache.hadoop" % "hadoop-aws" % "3.2.1"
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "3.2.1"
spark.sparkContext.hadoopConfiguration.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
spark.sparkContext.hadoopConfiguration.set("fs.s3a.access.key", config.s3AccessKey)
spark.sparkContext.hadoopConfiguration.set("fs.s3a.secret.key", config.s3SecretKey)
spark.sparkContext.hadoopConfiguration.set("spark.hadoop.fs.s3a.aws.credentials.provider", "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider")

我得到的错误是. io .IOException:从选项fs.s3a.aws.credentials。提供java.lang.ClassNotFoundException:类org.apache.hadoop.fs.s3a.auth。IAMInstanceCredentialsProvider未找到

它在旧版本的spark和hadoop上运行良好。确切地说,我之前使用的是spark 2.4.8版本和hadoop 2.8.5版本

我期待使用最新的EMR版本,包括spark 3.2.0和hadoop 3.2.1。这个问题主要是因为hadoop 3.2.1,因此唯一的选择是使用旧版本的EMR。Spark 2.4.8和hadoop 2.10.1对我有用

相关内容