Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark SQL toDF方法失败,返回java.lang.NoSuchMethodError 客观的_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Scala Spark SQL toDF方法失败,返回java.lang.NoSuchMethodError 客观的

Scala Spark SQL toDF方法失败,返回java.lang.NoSuchMethodError 客观的,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,了解问题的原因和解决方案。使用spark submit时会出现问题。谢谢你的帮助 spark-submit --class "AuctionDataFrame" --master spark://<hostname>:7077 auction-project_2.11-1.0.jar 问题 调用toDF方法将RDD转换为数据帧会导致错误 Exception in thread "main" java.lang.NoSuchMethodError: scala.reflect.api

了解问题的原因和解决方案。使用spark submit时会出现问题。谢谢你的帮助

spark-submit --class "AuctionDataFrame" --master spark://<hostname>:7077 auction-project_2.11-1.0.jar
问题 调用toDF方法将RDD转换为数据帧会导致错误

Exception in thread "main" java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaMirrors$JavaMirror;
    at AuctionDataFrame$.main(AuctionDataFrame.scala:52)
    at AuctionDataFrame.main(AuctionDataFrame.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.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
代码 环境 Ubuntu 14.04上的Spark:

      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.6.2
      /_/

Using Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_92)
Windows上的sbt:

D:\>sbt sbtVersion
[info] Set current project to root (in build file:/D:/)
[info] 0.13.12
研究 研究了类似的问题,这些问题表明编译Spark的Scala版本不兼容

因此,将build.sbt中的Scala版本更改为2.10,创建了2.10JAR,但错误仍然存在。无论是否使用提供的%1,都不会更改错误

scalaVersion := "2.10.6"
原因 Spark 1.6.2是使用Scala 2.11从源文件编译而成的。然而,spark-1.6.2-bin-without-hadoop.tgz被下载并放在lib/目录中

我认为,因为spark-1.6.2-bin-without-hadoop.tgz是用Scala 2.10编译的,所以会导致兼容性问题

修理 从lib目录中删除spark-1.6.2-bin-without-hadoop.tgz,并使用下面的库依赖项运行“sbt-package”

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "1.6.2" % "provided",
    "org.apache.spark" %% "spark-sql" % "1.6.2" % "provided",
    "org.apache.spark" %% "spark-mllib" % "1.6.2" % "provided"
)
原因 Spark 1.6.2是使用Scala 2.11从源文件编译而成的。然而,spark-1.6.2-bin-without-hadoop.tgz被下载并放在lib/目录中

我认为,因为spark-1.6.2-bin-without-hadoop.tgz是用Scala 2.10编译的,所以会导致兼容性问题

修理 从lib目录中删除spark-1.6.2-bin-without-hadoop.tgz,并使用下面的库依赖项运行“sbt-package”

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "1.6.2" % "provided",
    "org.apache.spark" %% "spark-sql" % "1.6.2" % "provided",
    "org.apache.spark" %% "spark-mllib" % "1.6.2" % "provided"
)

的可能副本看起来仍然像是版本问题。仔细检查到处都在使用什么版本…@TzachZohar,谢谢你的评论,但我将Scala版本更改为“2.10.6”,再次运行“sbt清理”和“sbt包”,这并没有解决问题。你能更具体地说明链接文章是如何解决的吗?可能的副本看起来仍然像是版本问题。仔细检查到处都在使用什么版本…@TzachZohar,谢谢你的评论,但我将Scala版本更改为“2.10.6”,再次运行“sbt清理”和“sbt包”,这并没有解决问题。你能更具体地说明链接文章如何解决这个问题吗?
scalaVersion := "2.10.6"
libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "1.6.2" % "provided",
    "org.apache.spark" %% "spark-sql" % "1.6.2" % "provided",
    "org.apache.spark" %% "spark-mllib" % "1.6.2" % "provided"
)