【发布时间】:2021-11-15 01:35:43
【问题描述】:
我有这段代码:
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://。
【问题讨论】:
标签: amazon-web-services scala hadoop amazon-s3 amazon-emr