找不到 AWS EMR s3a 文件系统

AWS EMR s3a filesystem not found

我是 运行 一个 EMR 实例。它工作正常,但当我尝试从 Python Spark 脚本访问 S3 文件时突然开始出现以下错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o36.json.: 
   java.lang.RuntimeException: 
     java.lang.ClassNotFoundException: 
       Class org.apache.hadoop.fs.s3a.S3AFileSystem not found

我们如何解决这个问题?

提前致谢。

对于 Amazon EMR,使用 "s3:" 前缀。 S3A 连接器是 ASF 的开源连接器;亚马逊有自己的(闭源)连接器,这是他们唯一支持的连接器

这是 spark 依赖项的问题。我必须在 park-defaults.conf 中添加 jars 配置。

spark.jars.packages                com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.2

请关注下方link: https://gist.github.com/eddies/f37d696567f15b33029277ee9084c4a0

  1. 下载 hadoop-aws-3.2.1.jar(或根据您的 EMR 版本高于 2.7.10 的任何版本)并将其放入 /usr/lib/spark/jars
  2. 下载最新的aws SDK并放入/usr/lib/spark/jars
  3. 更新/usr/lib/spark/conf/spark-defaults.conf
  4. 更新 spark.driver.extraClasspath - 最后添加这 2 个新 jar 的完整路径,以冒号分隔
  5. 运行 spark 提交之后

注意:我使用的是 AWS EMR 版本 6.0+