未找到 AWS EMR s3a 文件系统
Posted
技术标签:
【中文标题】未找到 AWS EMR s3a 文件系统【英文标题】:AWS EMR s3a filesystem not found 【发布时间】:2018-09-29 13:38:00 【问题描述】:我正在运行一个 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
我们如何解决这个问题?
提前致谢。
【问题讨论】:
【参考方案1】:这是 spark 依赖项的问题。我必须在 park-defaults.conf 中添加 jars 配置。
spark.jars.packages com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.2
请点击以下链接: https://gist.github.com/eddies/f37d696567f15b33029277ee9084c4a0
【讨论】:
如果你已经下载了一些包,有时spark可能无法完美下载依赖。在这种情况下,最好删除 .ivy2/cash、.ivy2/jars 和 .m2/repository。看看这篇文章:github.com/databricks/spark-redshift/issues/244 感谢@Moohebat 的文章。【参考方案2】:对于 Amazon EMR,使用“s3:”前缀。 S3A 连接器是 ASF 的开源连接器; Amazon 有自己的(闭源)连接器,这是他们唯一支持的连接器
【讨论】:
我试过了,现在它抛出 java.io.IOException: No FileSystem for scheme: s3以上是关于未找到 AWS EMR s3a 文件系统的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Apache Spark 访问 s3a:// 文件?
hadoop fs -ls s3://bucket 或 s3a://bucket 抛出“没有这样的文件或目录”错误