我在AWS EC2 VM(Ubuntu 14.04)上,愿意从我的S3文件中使用Spark on RDDs做一些基础知识。在成功运行此脏命令时(暂时不使用sparkContext.hadoopConfiguration
)
scala> val distFile = sc.textFile("s3n://< AWS_ACCESS_KEY_ID>:<AWS_SECRET_ACCESS_KEY>@bucketname/folder1/folder2/file.csv")
运行distFile.count()
java.lang.NoClassDefFoundError: org/jets3t/service/ServiceException
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.createDefaultStore(NativeS3FileSystem.java:334)
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.initialize(NativeS3FileSystem.java:324)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2596)
...
...
Caused by: java.lang.ClassNotFoundException: org.jets3t.service.ServiceException
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
我以前
export
添加为.bashrc SPARK_HADOOP_VERSION=2.6.0-cdh5.4.1 sbt/sbt assembly
是否与textFile("s3n// ...")
的语法有关?我尝试了其他人,包括s3://
没有成功......
谢谢
答案 0 :(得分:1)
将Jets3t jar包含到您的类路径中。使用当前设置添加适当的兼容版本。您需要将ServiceException添加到类路径中。
答案 1 :(得分:0)
您需要在CLASSPATH中包含hadoop-mapreduce-client jar。就我而言,我使用这些依赖项进行了自己的发布。
我将以下文件放在lib文件夹中:
答案 2 :(得分:0)
我遇到了同样的问题。尽管它发生在带有hadoop v2.7.2环境的spark v2.1.0,但是我把它留在这里是因为它会是同样的原因。这就是我所拥有的。
A needed class was not found. This could be due to an error in your runpath. Missing class: org/jets3t/service/ServiceException
java.lang.NoClassDefFoundError: org/jets3t/service/ServiceException
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.createDefaultStore(NativeS3FileSystem.java:342)
at org.apache.hadoop.fs.s3native.NativeS3FileSystem.initialize(NativeS3FileSystem.java:332)
at
...
...
Caused by: java.lang.ClassNotFoundException: org.jets3t.service.ServiceException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
这是因为类路径获得net.java.dev.jets3t:jets3t
依赖项的较低版本而不是org.apache.hadoop:hadoop-aws
所需的版本。
我在build.sbt
中添加net.java.dev.jets3t:jets3t:0.9.0
后解决了这个问题