amazon-web-services - org.apache.hadoop.fs.UnsupportedFileSystemException:方案“s3”没有文件系统
问题描述
我有这段代码:
import org.apache.hadoop.fs.Path
import org.apache.hadoop.conf.Configuration
new Path("s3://bucket/key").getFileSystem(new Configuration())
当我在本地运行它时,出现以下异常:
No FileSystem for scheme "s3"
org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "s3"
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:3336)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3356)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:123)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3407)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3375)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:486)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:365)
但是,当我使用 spark-shell 在 EMR 上运行它时,它可以工作:
scala> new Path("s3://bucket/key").getFileSystem(new Configuration())
res0: org.apache.hadoop.fs.FileSystem = com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem
为了包含com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem
在我的项目中,我应该添加什么到我的 sbt 文件中?我知道 s3a:// 有效,但我想在本地测试和 EMR 应用程序中都使用 s3://。
解决方案
如果您只是希望 URL 匹配,请尝试在您的 spark 作业中设置
spark.hadoop.fs.s3.impl org.apache.hadoop.fs.s3a.S3AFileSystem
这表示“将 S3A FS 用于 s3 url”。
推荐阅读
- spring - Spring Cloud Data Flow:使用 Java DSL 定义的部署流
- javascript - 如何在 JavaScript 中添加暂停?
- xml - 如何在使用 Mulesoft 转换消息时跳过 csv 中的空行
- rust - 使用枚举和匹配的迭代二叉搜索树
- python - 如何计算熊猫行之间的条件百分比变化?
- c++ - 我的动态数组有问题 - 线程 1:EXC_BAD_ACCESS (code=1, address=0x0)
- python - c++ 中的 np.gradient 替代方案
- python - 如何从 CSV 文件创建过滤值图表?
- android - 如何在协程中开始新的活动?Kotlin 安卓
- java - Java更改背景颜色png图像