Такой метод не работает для каждого в Scala задании на Apache Spark - PullRequest
0 голосов
/ 13 апреля 2020

Я выполняю очень простое Scala задание на Apache Spark 2.4.5, и когда я пытаюсь перебрать столбцы в DataFrame и вывести их имена, я получаю следующую трассировку стека, соответствующую строке, где я попробуйте и вызовите для каждого.

Exception in thread "main" java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)[Ljava/lang/Object;
at SimpleApp$.main(SimpleApp.scala:10)
at SimpleApp.main(SimpleApp.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.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:845)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:161)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:184)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:920)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:929)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

Я работаю Apache Spark в Docker, используя этот образ: bde2020 / spark-master: 2.4.5-hadoop2.7 Я компилирую свое приложение, используя scalaVersion: = "2.12.11"

Полный код приложения:

import org.apache.spark.sql.{Row, SparkSession}

object SimpleApp {
  def main(args: Array[String]) {
    val file = "/spark/jobs/job1/data/test.json"
    val spark = SparkSession.builder.appName("Simple Application Scala").getOrCreate()
    val testData = spark.read.json(file)
    println("prints fine")
    testData.columns.foreach(x => println(x))
    spark.stop()
  }

Файл build.sbt:

name := "spark-scala"

version := "0.1"

scalaVersion := "2.12.11"

libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.5"

Я в растерянности, у меня есть проверил и проверил Я запускаю правильные версии вещей, но подозреваю, что я должен что-то пропустил!

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

После того, как было обнаружено много ударов головой, изображение на самом деле использует Scala 2.11.12, что устарело в Spark 2.4.5! Оглядываясь назад, все работает сейчас.

0 голосов
/ 13 апреля 2020

Вы не устанавливаете spark-core в своих зависимостях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...