Amazon ec2 Spark 1.3.1:无法从S3存储桶中读取文件,org/jets3t/service/ServiceException

Amazon ec2 Spark 1.3.1:无法从S3存储桶中读取文件,org/jets3t/service/ServiceException,amazon-ec2,amazon-s3,apache-spark,hadoop2,Amazon Ec2,Amazon S3,Apache Spark,Hadoop2,我在AWSEC2虚拟机(Ubuntu14.04)上,愿意使用S3文件中的Spark on RDD做一些基础工作。成功运行此脏命令时(暂时不使用sparkContext.hadoopConfiguration) 我以前 定义了一个AWS IAM用户,该用户具有相应的AWS\u访问\u密钥\u ID和AWS\u机密\u访问\u密钥 在.bashrc中添加了两个键的导出,作为env变量 内置Spark 1.3.1,带有Spark\u HADOOP\u版本=2.6.0-cdh5.4.1 sbt/sbt

我在AWSEC2虚拟机(Ubuntu14.04)上,愿意使用S3文件中的Spark on RDD做一些基础工作。成功运行此脏命令时(暂时不使用
sparkContext.hadoopConfiguration

我以前

  • 定义了一个AWS IAM用户,该用户具有相应的AWS\u访问\u密钥\u ID和AWS\u机密\u访问\u密钥
  • 在.bashrc中添加了两个键的
    导出
    ,作为env变量
  • 内置Spark 1.3.1,带有
    Spark\u HADOOP\u版本=2.6.0-cdh5.4.1 sbt/sbt组件
  • 安装并运行hadoop2.6-cdh5.4.1(伪分布式)
它是否与
文本文件(“s3n/…”
的语法有关?我尝试过其他方法,包括
s3://
,但没有成功


谢谢

您需要在类路径中包含hadoop mapreduce客户端JAR。在我的例子中,我使用这些依赖项制作了自己的发行版

我将以下文件放在lib文件夹中:

  • hadoop-mapreduce-client-jobclient-2.6.0.jar
  • hadoop-mapreduce-client-hs-plugins-2.6.0.jar
  • hadoop-mapreduce-client-shuffle-2.6.0.jar
  • hadoop-mapreduce-client-jobclient-2.6.0-tests.jar
  • hadoop-mapreduce-client-common-2.6.0.jar
  • hadoop-mapreduce-client-app-2.6.0.jar
  • hadoop-mapreduce-client-hs-2.6.0.jar
  • hadoop-mapreduce-client-core-2.6.0.jar

    • 将Jets3t jar包含到类路径中。添加与当前设置兼容的正确版本。您需要将ServiceException添加到类路径中。

      我也遇到了同样的问题。尽管它发生在使用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
      之后解决了这个问题,在找到jar的位置后,我运行了这个命令
      /spark-1.3.1/bin/spark-shell-classpath/usr/local/hadoop/share/hadoop/mapreduce/*
      ,但在运行
      distFile.count()时仍然会得到完全相同的错误
      尝试将这些罐子放在Spark的lib文件夹中。事实上,我在Spark的lib_managed/jars文件夹中找到了罐子,所以我运行了
      /Spark-1.3.1/bin/Spark-shell-classpath Spark-1.3.1/lib_managed/jars/*
      ,但不幸的是仍然得到了相同的jets3t错误:
      ,原因是:java.lang.ClassNotFoundException:org.jets3t.service.S3ServiceException
      我还使用了命令
      spark shell--jars$(echo/home/ubuntu/spark-1.3.1/lib_managed/jars/*.jar | tr'',')
      下面的线程“spark shell:如何定义jar加载顺序”,得到了相同的错误。我还为我的S3文件授予了打开/上传权限,以防万一。这很有帮助!谢谢你能解释一下怎么做吗?我正在运行一个jupyter笔记本,它给出了相同的错误。您能告诉我在哪里可以找到build.sbt吗?
      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)
      
      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)