java - Spark does not find Scala specific methods -
the problem every job fails following exception:
exception in thread "main" java.lang.nosuchmethoderror: scala.predef$.refarrayops([ljava/lang/object;)[ljava/lang/object; @ ps.sparkapp.classification$.main(classification.scala:35) @ ps.sparkapp.classification.main(classification.scala) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:498) @ org.apache.spark.deploy.sparksubmit$.org$apache$spark$deploy$sparksubmit$$runmain(sparksubmit.scala:743) @ org.apache.spark.deploy.sparksubmit$.dorunmain$1(sparksubmit.scala:187) @ org.apache.spark.deploy.sparksubmit$.submit(sparksubmit.scala:212) @ org.apache.spark.deploy.sparksubmit$.main(sparksubmit.scala:126) @ org.apache.spark.deploy.sparksubmit.main(sparksubmit.scala) this exception meas task can not find method. develop using intelij community edition. have no problems compiling package. dependencies packaged correctly. here 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 i found out error has somehow scala because happens when use functionality native scala, e.g scala loop, .map or .drop(2). class , still written in scala, if avoid functionality .map or drop(2) works fine.
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 error happens // take features , put them 1 vector val assembler = new vectorassembler() .setinputcols(col) .setoutputcol("features") val data = assembler.transform(dataset) data.printschema() data.show() sc.stop() } } as said if not use .drop(2) works perfectly, avoiding these methods no option since painful..
i not find solution on web, ideas?
btw: can use these methods within spark-shell, find strange.
thanks in advance.
note 1)
i use: spark version 2.1.1
using scala version 2.11.8 (openjdk 64-bit server vm, java 1.8.0_131)
try adding actual scala libraries etc project dependency. e.g.:
librarydependencies += "org.scala-lang" % "scala-library" % "2.11.6"
Comments
Post a Comment