gpt4 book ai didi

apache-spark - Spark 使用 sc.textFile ("s3a://bucket/filePath"读取 s3 )。 java.lang.NoSuchMethodError : com. amazonaws.services.s3.transfer.TransferManager

转载 作者:行者123 更新时间:2023-12-03 07:45:38 25 4
gpt4 key购买 nike

我已将自爆 jar 添加到spark/jars路径中。

  • hadoop-aws-2.7.3.jar
  • aws-java-sdk-s3-1.11.126.jar
  • aws-java-sdk-core-1.11.126.jar
  • spark-2.1.0

在 Spark-Shell 中

scala> sc.hadoopConfiguration.set("fs.s3a.access.key", "***")

scala> sc.hadoopConfiguration.set("fs.s3a.secret.key", "***")

scala> val f = sc.textFile("s3a://bucket/README.md")

scala> f.count

java.lang.NoSuchMethodError: com.amazonaws.services.s3.transfer.TransferManager.(Lcom/amazonaws/services/s3/AmazonS3;Ljava/util/concurrent/ThreadPoolExecutor;)V at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:287) at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2669) at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94) at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703) at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373) at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295) at org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:258) at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:229) at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:315) at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:202)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:252) at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:250) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.rdd.RDD.partitions(RDD.scala:250) at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35) at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:252) at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:250) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.rdd.RDD.partitions(RDD.scala:250) at org.apache.spark.SparkContext.runJob(SparkContext.scala:1958) at org.apache.spark.rdd.RDD.count(RDD.scala:1157) ... 48 elided

  1. “java.lang.NoSuchMethodError:com.amazonaws.services.s3.transfer.TransferManager”是由不匹配的 jar 引发的? (hadoop-aws、aws-java-sdk)

  2. 要从 Spark 应用程序访问存储在 Amazon S3 中的数据,应使用 Hadoop 文件 API。那么hadoop-aws.jar包含Hadoop文件AP​​IS还是必须运行hadoop env?

最佳答案

JAR 不匹配; AWS SDK 在各个版本中都非常脆弱。

Hadoop S3A 代码位于 hadoop-aws JAR 中;还需要hadoop-common。 Hadoop 2.7 是针对 AWS S3 SDK 1.10.6 构建的。 (*更新:不,是 1.7.4。迁移到 1.10.6 进入了 Hadoop 2.8)HADOOP-12269

您必须使用该版本。如果您想使用 1.11 JAR,那么您需要查看 hadoop 源代码树并自行构建branch-2。好消息:它使用阴影 AWS SDK,因此其版本的 jackson 和 joda time 不会破坏任何东西。哦,如果您查看 Spark Master,并使用 -Phadoop-cloud 配置文件进行构建,它会提取正确的内容来正确设置 Spark 的依赖项。

更新:2017 年 10 月 1 日:Hadoop 2.9.0-alpha 和 3.0-beta-1 使用 1.11.199;假设发布版本将是该版本或更新版本。

关于apache-spark - Spark 使用 sc.textFile ("s3a://bucket/filePath"读取 s3 )。 java.lang.NoSuchMethodError : com. amazonaws.services.s3.transfer.TransferManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43929025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com