【问题标题】:NoSuchMethodError: scala.collection.mutable.Buffer$.empty()Lscala/collection/GenTraversableNoSuchMethodError: scala.collection.mutable.Buffer$.empty()Lscala/collection/GenTraversable
【发布时间】:2019-12-04 00:48:10
【问题描述】:

目前我正在编译我的 JAR 文件,但由于出现标题中的错误,我无法运行 JAR。我正在使用sbt assembly 进行编译,以便包含所有依赖项。

Scala 2.11.12 Spark 2.4.2

package com.foo.bar

import org.apache.spark.sql.SparkSession
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import Array._

object DebugApp extends App {

  override def main(args: Array[String]) {
    if (args.length == 0) {
        println("Must pass in args:  sparkMaster, dataPath")
    }
    val sparkMaster            = args(0)
    val bucket                 = args(1)
    val dataPath               = args(2)
    val parsedDestionationPath = args(3)
    val rawDestionationPath    = args(4)

    val spark = SparkSession
      .builder()
      .config("spark.driver.extraJavaOptions", "-Dlog4jspark.root.logger=WARN,console")
      .appName("Parser")
      .master(sparkMaster)
      .getOrCreate()
  }
}

错误的前 2 行表明这是来自 Spark:

线程“main”中的异常 java.lang.NoSuchMethodError: scala.collection.mutable.Buffer$.empty()Lscala/collection/GenTraversable; 在 org.apache.spark.sql.SparkSessionExtensions.(SparkSessionExtensions.scala:72)

进一步的上下文是我在 build.sbt 中使用的依赖项:

scalaVersion in ThisBuild := "2.11.12"
fork in run := true
...
val sparkV          = "2.4.2"
val spark          = "org.apache.spark"           %% "spark-core"              % sparkV
val sparkSql       = "org.apache.spark"           %% "spark-sql"               % sparkV
val sparkHive      = "org.apache.spark"           %% "spark-hive"              % sparkV

【问题讨论】:

  • 这个问题看起来像不兼容的 Scala 库版本,但您显示的依赖项不应该产生它。您是否还有其他依赖项,尤其是没有%%

标签: java scala apache-spark apache-spark-sql


【解决方案1】:

简单来说,如果要在本地运行 Spark(v2.4.x),必须将 Hadoop 指定为 2.6.5。您可以使用 任何 版本的 AWS Java 开发工具包,但 Hadoop 专门锁定到该版本。如果您想规避这种情况,明智的做法是通过以下两种方式之一将文件上传到 S3:

  • 从您的 JAR 中,使用 TransferManager
    • 在 v1.11.600 中,有一个错误导致它使用 org.apache.httpcomponents.httpclient 4.5.8,这可能导致日志泛滥
  • 来自使用 aws s3 sync 的 bash 脚本 推荐

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多