【问题标题】:Spark Scala Error: java.lang.NoSuchMethodError: scala.collection.mutable.Buffer$.empty()Lscala/collection/GenTraversableSpark Scala 错误:java.lang.NoSuchMethodError:scala.collection.mutable.Buffer$.empty()Lscala/collection/GenTraversable
【发布时间】:2021-08-19 20:24:50
【问题描述】:

我在使用 Intellij Scala 读取 CSV 文件时遇到以下问题。

错误信息:

Exception in thread "main" java.lang.NoSuchMethodError: scala.collection.mutable.Buffer$.empty()Lscala/collection/GenTraversable;
    at org.apache.spark.sql.SparkSessionExtensions.<init>(SparkSessionExtensions.scala:72)
    at org.apache.spark.sql.SparkSession$Builder.<init>(SparkSession.scala:780)
    at org.apache.spark.sql.SparkSession$.builder

源代码:

import org.apache.spark.sql.SparkSession
object broadcastright {

   def main(args : Array[String]): Unit = {
     val spark = SparkSession
       .builder()
       .master("local")
       .appName("Read CSV File")
       .getOrCreate()

     val df = spark.read
       .option("header", "true")
       .option("delimiter", ",")
       .option("inferSchema", "false")
       .load("src\\main\\resources\\people.csv")

     df.show()
   }
  }

Pom.xml

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.12</artifactId>
    <version>2.4.5</version>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.12</artifactId>
    <version>2.4.0</version>
</dependency>

我不确定这个问题的原因。

【问题讨论】:

  • 你使用的是什么版本的scala??
  • 这个问题解决了吗?
  • 没有..还没有..使用Spark-sdk-2.13.1
  • 从 pom.xml 你的 spark 使用 scala 版本 2.12 并且你必须在 ide 中使用相同的 scala 版本。

标签: scala apache-spark intellij-idea


【解决方案1】:

如果 spark 库有任何版本差异,我们将会遇到很多问题,因为某些方法可能在较新版本中不可用,或者某些新方法在较低版本的 spark 中可能不可用。

请在 maven 文件中添加相同版本的 spark 库。 pom.xml 中的 scala 版本和 classpath scala 版本也应该匹配。

【讨论】:

    【解决方案2】:

    如果您的 Intellij 使用不兼容的 Scala 编译器版本,您会遇到这些类型的问题。如果您使用 Scala 构建 Spark 管道,这是 Intellij 工作区中非常常见的问题。

    如果您在 Intellij 中安装 Scala 插件,它会安装默认版本的 SDK。您只需确保安装的 Scala 编译器/SDK 版本与您的 Spark 版本兼容。

    例如,您使用的是 Spark 3.x.x,请确保您拥有 Scala 2.12.x 编译器 已安装。

    解决问题的过程:

    文件 -> 项目结构 -> 平台设置 -> 全局库 -> +

    1. 点击+图标

    1. 在 Scala 上单击您要下载的版本。就我而言,Maven 2.12.2

    1. 从下拉列表中选择 Scala 版本并单击确定。在我的情况下 2.12.2

    1. 用它标记您的项目。

    1. 您的配置应该是这样的。

    【讨论】:

      【解决方案3】:

      在我的例子中,Scala 2.13 自动安装在 IntellijIDEA 上,但 spark 运行在 Scala 2.12 上。

      我从 IntellijIDEA 中删除了 Scala 2.13,并使用 maven 安装了 Scala 2.12。

      【讨论】:

        猜你喜欢
        • 2019-12-04
        • 2017-01-01
        • 2021-03-22
        • 2015-09-13
        • 1970-01-01
        • 2017-02-17
        • 2017-07-11
        • 2021-03-21
        • 2017-01-28
        相关资源
        最近更新 更多