【问题标题】:Getting exception : java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;) while using data frames使用数据帧时出现异常:java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)
【发布时间】:2017-02-28 22:48:03
【问题描述】:

在 scala 应用程序中使用数据帧并使用 spark 运行它时,我收到“java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)”错误。但是,如果我只使用 RDD 而不是数据帧,那么相同的 pom 和设置不会出现此类错误。此外,在浏览其他具有相同错误的帖子时,提到 scala 版本必须为 2.10,因为 spark 与 2.11 scala 不兼容,我使用的是 2.10 scala 版本和 2.0.0 spark。

Below is the snip from pom:



<properties>
      <spark-assembly>/usr/lib/spark/lib/spark-assembly.jar</spark-assembly>
      <encoding>UTF-8</encoding>
      <hadoop.version>2.7.1</hadoop.version>
      <hbase.version>1.1.1</hbase.version>
      <scala.version>2.10.5</scala.version>
      <scala.tools.version>2.10</scala.tools.version>
      <spark.version>2.0.0</spark.version>
      <phoenix.version>4.7.0-HBase-1.1</phoenix.version>
  </properties>

  <dependencies>
      <dependency>
          <groupId>org.scala-lang</groupId>
          <artifactId>scala-library</artifactId>
          <version>${scala.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-client</artifactId>
          <version>${hadoop.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.hbase</groupId>
          <artifactId>hbase-client</artifactId>
          <version>${hbase.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.hbase</groupId>
          <artifactId>hbase-server</artifactId>
          <version>${hbase.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.spark</groupId>
          <artifactId>spark-core_${scala.tools.version}</artifactId>
          <version>${spark.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.spark</groupId>
          <artifactId>spark-sql_${scala.tools.version}</artifactId>
          <version>${spark.version}</version>
      </dependency>
      <dependency>
          <groupId>org.apache.spark</groupId>
          <artifactId>spark-hive_${scala.tools.version}</artifactId>
          <version>${spark.version}</version>
      </dependency>

  </dependencies>

错误:

16/10/19 02:57:26 ERROR yarn.ApplicationMaster: User class threw exception: java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaMirrors$JavaMirror;
java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaMirrors$JavaMirror;
        at com.abc.xyz.Compare$.main(Compare.scala:64)
        at com.abc.xyz.Compare.main(Compare.scala)
        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:498)
        at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:627)
16/10/19 02:57:26 INFO yarn.ApplicationMaster: Final app status: FAILED, exitCode: 15, (reason: User class threw exception: java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaMirrors$JavaMirror;)
16/10/19 02:57:26 INFO spark.SparkContext: Invoking stop() from shutdown hook

【问题讨论】:

    标签: scala apache-spark spark-dataframe bigdata


    【解决方案1】:

    更改scala版本

    &lt;scala.version&gt;2.11.8&lt;/scala.version>

    <scala.tools.version>2.11</scala.tools.version>
    

    并添加

    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-reflect</artifactId>
        <version>${scala.version}</version>
      </dependency>
    

    【讨论】:

    • 在pom.xml中添加以上内容后,你清理过项目了吗?
    • 只是出于我的疑问,我在所有应该使用 scala 2.10 的地方都读到过,这是否适用于 spark 1.6?和 2.11 应该与 spark 2.0 一起使用吗?还有,scala reflect 有什么用?
    • 对于 Scala API,Spark 2.0.0 使用 Scala 2.11 看看这个spark.apache.org/docs/2.0.0
    • scala-reflect 怎么样?
    • 在 spark 中清理项目是什么意思? @user1534615
    【解决方案2】:

    我也遇到了这个错误,这纯粹是版本问题。

    您的 scala 版本不兼容,或者您​​使用的版本可能正确,但 intellij 库具有旧版本。

    快速修复:

    我使用 spark 2.2.0 和 scala 2.10.4 ,然后我将其更改为 scala 版本 2.11.8。之后执行以下操作:

    1) 右键单击​​ intellij 模块 2)打开模块设置。 3)去图书馆并清除所有图书馆 4) 重建

    为我执行上述操作问题已解决。

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 2021-04-12
      • 2015-07-09
      • 2014-12-26
      相关资源
      最近更新 更多