gpt4 book ai didi

java - Spark 找不到 Scala 特定方法

转载 作者:行者123 更新时间:2023-12-01 22:37:46 24 4
gpt4 key购买 nike

问题是每个作业都会失败,但有以下异常(exception):

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;
at ps.sparkapp.Classification$.main(Classification.scala:35)
at ps.sparkapp.Classification.main(Classification.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:743)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

此异常表示任务找不到该方法。我使用 intelij 社区版进行开发。我编译这个包没有任何问题。所有依赖项均已正确打包。这是我的 build.sbt:

name := "SparkApp"
version := "1.0"

scalaVersion := "2.11.6"

libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.1.1"
libraryDependencies += "org.apache.spark" % "spark-mllib_2.11" % "2.1.1"


scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

我发现这个错误与 scala 有某种关系,因为它只在我使用 scala 原生的功能时才会发生,例如 scala for 循环、.map 或 .drop(2)。类和所有内容仍然是用 scala 编写的,但如果我避免使用 .map 或 drop(2) 等功能,那么一切都会正常工作。

import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.sql.SparkSession
import org.apache.spark.ml.linalg.Vector

object Classification {

def main(args: Array[String]) {
...
//df.printSchema()
var dataset = df.groupBy("user_id","measurement_date").pivot("rank").min()

val col = dataset.schema.fieldNames.drop(2) // <- here the error happens

// take all features and put them into one vector
val assembler = new VectorAssembler()
.setInputCols(col)
.setOutputCol("features")

val data = assembler.transform(dataset)
data.printSchema()
data.show()

sc.stop()
}

}

如前所述,如果我不使用 .drop(2) ,一切都会完美运行,但是避免这些方法是没有选择的,因为那非常痛苦。

我在网上找不到任何解决方案,有什么想法吗?

顺便说一句:我可以在spark-shell中使用这些方法,我觉得很奇怪。

提前致谢。

注1)

我使用:SPARK版本2.1.1

使用 Scala 版本 2.11.8(OpenJDK 64 位服务器虚拟机,Java 1.8.0_131)

最佳答案

尝试添加实际的 Scala 库等作为项目依赖项。例如:

libraryDependencies += "org.scala-lang" % "scala-library" % "2.11.6"

关于java - Spark 找不到 Scala 特定方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45377599/

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