为什么我不能再从Spark应用程序中的AWS S3读取信息?

阿布·苏莱曼|

我已经升级到Apache Spark 1.5.1,但不确定是否导致了它。我在火花提交中使用了访问密钥,该密钥一直有效。

Exception in thread "main" java.lang.NoSuchMethodError: org.jets3t.service.impl.rest.httpclient.RestS3Service.<init>(Lorg/jets3t/service/security/AWSCredentials;)V

    SQLContext sqlContext = new SQLContext(sc);
    DataFrame df = sqlContext.read()
        .format("com.databricks.spark.csv")
        .option("inferSchema", "true")
        .load("s3n://ossem-replication/gdelt_data/event_data/" + args[0]);

    df.write()
        .format("com.databricks.spark.csv")
        .save("/user/spark/ossem_data/gdelt/" + args[0]);

下面的错误更多。有一个不包含该方法的类,这意味着依赖关系不匹配。似乎jets3t不包含RestS3Service方法。(Lorg / jets3t / service / security / AWSCredentials;)V有人可以向我解释一下吗?

Exception in thread "main" java.lang.NoSuchMethodError: org.jets3t.service.impl.rest.httpclient.RestS3Service.<init>(Lorg/jets3t/service/security/AWSCredentials;)V
    at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.initialize(Jets3tNativeFileSystemStore.java:60)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
    at org.apache.hadoop.fs.s3native.$Proxy24.initialize(Unknown Source)
    at org.apache.hadoop.fs.s3native.NativeS3FileSystem.initialize(NativeS3FileSystem.java:272)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2596)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2630)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2612)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)
    at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:256)
    at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:228)
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:313)
    at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:207)
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)
    at scala.Option.getOrElse(Option.scala:120)
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)
    at scala.Option.getOrElse(Option.scala:120)
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)
    at org.apache.spark.rdd.RDD$$anonfun$take$1.apply(RDD.scala:1277)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:147)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108)
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:306)
    at org.apache.spark.rdd.RDD.take(RDD.scala:1272)
    at org.apache.spark.rdd.RDD$$anonfun$first$1.apply(RDD.scala:1312)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:147)
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108)
    at org.apache.spark.rdd.RDD.withScope(RDD.scala:306)
    at org.apache.spark.rdd.RDD.first(RDD.scala:1311)
    at com.databricks.spark.csv.CsvRelation.firstLine$lzycompute(CsvRelation.scala:101)
    at com.databricks.spark.csv.CsvRelation.firstLine(CsvRelation.scala:99)
    at com.databricks.spark.csv.CsvRelation.inferSchema(CsvRelation.scala:82)
    at com.databricks.spark.csv.CsvRelation.<init>(CsvRelation.scala:42)
    at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:74)
    at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:39)
    at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:27)
    at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:125)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:114)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:104)
    at com.bah.ossem.spark.GdeltSpark.main(GdeltSpark.java:20)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
包装

我有同样的问题,但是使用Spark 1.6,并且我正在使用Scala而不是Java。发生此错误的原因是,Spark Core具有Hadoop客户端版本2.2,而我正在使用的Spark集群安装为1.6。我必须进行以下更改才能使其正常工作。

  1. 将hadoop客户端依赖项更改为2.6(我使用的Hadoop版本)

    "org.apache.hadoop" % "hadoop-client" % "2.6.0",
    
  2. 在我的Spark fat jar中包含hadoop-aws库,因为1.6版的Hadoop库中不再包含此依赖关系

    "org.apache.hadoop" % "hadoop-aws" % "2.6.0",
    
  3. 将AWS密钥和密钥导出为环境变量。

  4. 在SparkConf中指定以下Hadoop配置

    val sparkContext = new SparkContext(sparkConf)
    val hadoopConf = sparkContext.hadoopConfiguration
    hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
    hadoopConf.set("fs.s3.awsAccessKeyId", sys.env.getOrElse("AWS_ACCESS_KEY_ID", ""))
    hadoopConf.set("fs.s3.awsSecretAccessKey", sys.env.getOrElse("AWS_SECRET_ACCESS_KEY", ""))
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我无法从Delphi VCL应用程序读取和写入Amazon S3?

来自分类Dev

为什么我不能在 swift 3 的应用程序中使用后台模式?

来自分类Dev

我无法从 uwp App 中的 ID3 标签读取信息

来自分类Dev

从字符串中读取信息

来自分类Dev

为什么我的 addListenerForSingleValueEvent 停止从 android 应用程序中的 Firebase 数据库读取数据?

来自分类Dev

如何在Spark Streaming EC2集群应用程序中从S3读取输入

来自分类Dev

spark无法从s3读取

来自分类Dev

为什么我的WPF应用程序中出现“无法加载DLL'sqlite3'”的信息?

来自分类Dev

如何从直播清单中读取/获取信息

来自分类Dev

如何从文本文件中读取信息?

来自分类Dev

Processing.js:从文件中读取信息

来自分类Dev

尝试从C中的文本文件读取信息

来自分类Dev

从结构化数组中读取信息

来自分类Dev

我可以在由AWS S3托管的Web应用程序中实施Google登录吗?

来自分类Dev

如何在我的IOS应用程序中读取AWS-S3加密文件(AES-256加密)?

来自分类Dev

为什么我不能在OS X的Terminal中从`apropos pthread`获取信息?

来自分类Dev

为什么我不能从 PDO 关联数组中获取信息以进行回显?

来自分类Dev

在Spark中从HDFS或S3读取边缘DB文件

来自分类Dev

是否可以从我的应用程序中获取信息并覆盖另一个应用程序?

来自分类Dev

AWS S3 - 无法识别配置文件信息

来自分类Dev

在Lambda中读取AWS S3 CSV列名称

来自分类Dev

在R中从AWS S3读取gzip文件的内容

来自分类Dev

如何判断Spark使用什么AWS凭证读取S3文件?

来自分类Dev

为什么Spark从S3读取和写入如此之快

来自分类Dev

还原后,为什么我的应用程序不返回到详细信息视图?

来自分类Dev

还原后,为什么我的应用程序不返回到详细信息视图?

来自分类Dev

为什么从node.js应用程序调用iostat会给我旧信息?

来自分类Dev

定期从AWS S3读取并发布到SQS

来自分类Dev

Tensorflow从AWS s3存储桶读取数据

Related 相关文章

  1. 1

    为什么我无法从Delphi VCL应用程序读取和写入Amazon S3?

  2. 2

    为什么我不能在 swift 3 的应用程序中使用后台模式?

  3. 3

    我无法从 uwp App 中的 ID3 标签读取信息

  4. 4

    从字符串中读取信息

  5. 5

    为什么我的 addListenerForSingleValueEvent 停止从 android 应用程序中的 Firebase 数据库读取数据?

  6. 6

    如何在Spark Streaming EC2集群应用程序中从S3读取输入

  7. 7

    spark无法从s3读取

  8. 8

    为什么我的WPF应用程序中出现“无法加载DLL'sqlite3'”的信息?

  9. 9

    如何从直播清单中读取/获取信息

  10. 10

    如何从文本文件中读取信息?

  11. 11

    Processing.js:从文件中读取信息

  12. 12

    尝试从C中的文本文件读取信息

  13. 13

    从结构化数组中读取信息

  14. 14

    我可以在由AWS S3托管的Web应用程序中实施Google登录吗?

  15. 15

    如何在我的IOS应用程序中读取AWS-S3加密文件(AES-256加密)?

  16. 16

    为什么我不能在OS X的Terminal中从`apropos pthread`获取信息?

  17. 17

    为什么我不能从 PDO 关联数组中获取信息以进行回显?

  18. 18

    在Spark中从HDFS或S3读取边缘DB文件

  19. 19

    是否可以从我的应用程序中获取信息并覆盖另一个应用程序?

  20. 20

    AWS S3 - 无法识别配置文件信息

  21. 21

    在Lambda中读取AWS S3 CSV列名称

  22. 22

    在R中从AWS S3读取gzip文件的内容

  23. 23

    如何判断Spark使用什么AWS凭证读取S3文件?

  24. 24

    为什么Spark从S3读取和写入如此之快

  25. 25

    还原后,为什么我的应用程序不返回到详细信息视图?

  26. 26

    还原后,为什么我的应用程序不返回到详细信息视图?

  27. 27

    为什么从node.js应用程序调用iostat会给我旧信息?

  28. 28

    定期从AWS S3读取并发布到SQS

  29. 29

    Tensorflow从AWS s3存储桶读取数据

热门标签

归档