Невозможно создать SparkSession для Scala без ошибки в IntelliJ - PullRequest
1 голос
/ 15 марта 2019

Я пытаюсь создать SparkSession, чтобы я мог использовать implicits._, но я получаю ошибки при запуске простого приложения.

Мой файл build.sbt выглядит так:

name := "Reddit-Data-Analyser"

version := "0.1"

scalaVersion := "2.11.12"

fork := true

libraryDependencies += "org.mongodb.scala" %% "mongo-scala-driver" % "2.4.0"

resolvers  += "MavenRepository" at "http://central.maven.org/maven2"

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

Я получаю неразрешенные ошибки зависимости от spark-sql, но похоже, что класс SparkSession все еще может загружаться.

Мой Main.scala выглядит так:

import org.apache.spark.sql.SparkSession 

object main extends App {

  val spark = SparkSession
    .builder()
    .config("spark.master", "local")
    //.config("spark.network.timeout", "10000s") //Not Relevant
    //.config("spark.executor.heartbeatInterval", "5000s") //Not Relevant
    .getOrCreate()

  println("Hello World")

  spark.stop()

}

* Редактирование: я действительно смог запустить SparkSession путем аннулирования кэшей и перезапуска (хотя я уже делал это много раз, поэтому я не уверен, что изменилось), теперь, когда я делаю ~run в консоли SBT, я получите сообщения [error] и разместите здесь вопрос об этом: Запись SparkSession в консоль с журналами [error] .

Ниже приведены мои старые сообщения об ошибках:

println не выполняется, вместо этого я сначала получаю следующий ERROR вывод:

[error] (run-main-7) java.lang.AbstractMethodError
java.lang.AbstractMethodError
    at org.apache.spark.internal.Logging$class.initializeLogIfNecessary(Logging.scala:99)
    at org.apache.spark.sql.internal.SharedState.initializeLogIfNecessary(SharedState.scala:42)
    at org.apache.spark.internal.Logging$class.log(Logging.scala:46)
    at org.apache.spark.sql.internal.SharedState.log(SharedState.scala:42)
    at org.apache.spark.internal.Logging$class.logInfo(Logging.scala:54)
    at org.apache.spark.sql.internal.SharedState.logInfo(SharedState.scala:42)
    at org.apache.spark.sql.internal.SharedState.<init>(SharedState.scala:71)
    at org.apache.spark.sql.SparkSession$$anonfun$sharedState$1.apply(SparkSession.scala:112)
    at org.apache.spark.sql.SparkSession$$anonfun$sharedState$1.apply(SparkSession.scala:112)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.SparkSession.sharedState$lzycompute(SparkSession.scala:112)
    at org.apache.spark.sql.SparkSession.sharedState(SparkSession.scala:111)
    at org.apache.spark.sql.internal.BaseSessionStateBuilder.build(BaseSessionStateBuilder.scala:284)
    at org.apache.spark.sql.SparkSession$.org$apache$spark$sql$SparkSession$$instantiateSessionState(SparkSession.scala:1050)
    at org.apache.spark.sql.SparkSession$$anonfun$sessionState$2.apply(SparkSession.scala:130)
    at org.apache.spark.sql.SparkSession$$anonfun$sessionState$2.apply(SparkSession.scala:130)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.SparkSession.sessionState$lzycompute(SparkSession.scala:129)
    at org.apache.spark.sql.SparkSession.sessionState(SparkSession.scala:126)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$getOrCreate$5.apply(SparkSession.scala:938)
    at org.apache.spark.sql.SparkSession$Builder$$anonfun$getOrCreate$5.apply(SparkSession.scala:938)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:99)
    at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:230)
    at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:40)
    at scala.collection.mutable.HashMap.foreach(HashMap.scala:99)
    at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:938)
    at controller.main$.delayedEndpoint$controller$main$1(Main.scala:20)
    at controller.main$delayedInit$body.apply(Main.scala:11)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App$$anonfun$main$1.apply(App.scala:76)
    at scala.App$$anonfun$main$1.apply(App.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
    at scala.App$class.main(App.scala:76)
    at controller.main$.main(Main.scala:11)
    at controller.main.main(Main.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)
[trace] Stack trace suppressed: run last compile:run for the full output.
java.lang.RuntimeException: Nonzero exit code: 1
    at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) Nonzero exit code: 1
[error] Total time: 9 s, completed Mar 14, 2019 9:43:29 PM
8. Waiting for source changes... (press enter to interrupt)
19/03/14 21:43:29 INFO AsyncEventQueue: Stopping listener queue executorManagement.
    java.lang.InterruptedException
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2048)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
    at org.apache.spark.scheduler.AsyncEventQueue$$anonfun$org$apache$spark$scheduler$AsyncEventQueue$$dispatch$1.apply(AsyncEventQueue.scala:94)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
    at org.apache.spark.scheduler.AsyncEventQueue.org$apache$spark$scheduler$AsyncEventQueue$$dispatch(AsyncEventQueue.scala:83)
    at org.apache.spark.scheduler.AsyncEventQueue$$anon$1$$anonfun$run$1.apply$mcV$sp(AsyncEventQueue.scala:79)
    at org.apache.spark.util.Utils$.tryOrStopSparkContext(Utils.scala:1319)
    at org.apache.spark.scheduler.AsyncEventQueue$$anon$1.run(AsyncEventQueue.scala:78)
19/03/14 21:43:29 INFO AsyncEventQueue: Stopping listener queue appStatus.
java.lang.InterruptedException
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2048)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
    at org.apache.spark.scheduler.AsyncEventQueue$$anonfun$org$apache$spark$scheduler$AsyncEventQueue$$dispatch$1.apply(AsyncEventQueue.scala:94)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
    at org.apache.spark.scheduler.AsyncEventQueue.org$apache$spark$scheduler$AsyncEventQueue$$dispatch(AsyncEventQueue.scala:83)
    at org.apache.spark.scheduler.AsyncEventQueue$$anon$1$$anonfun$run$1.apply$mcV$sp(AsyncEventQueue.scala:79)
    at org.apache.spark.util.Utils$.tryOrStopSparkContext(Utils.scala:1319)
    at org.apache.spark.scheduler.AsyncEventQueue$$anon$1.run(AsyncEventQueue.scala:78)
19/03/14 21:43:29 ERROR ContextCleaner: Error in cleaning thread
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
    at org.apache.spark.ContextCleaner$$anonfun$org$apache$spark$ContextCleaner$$keepCleaning$1.apply$mcV$sp(ContextCleaner.scala:181)
    at org.apache.spark.util.Utils$.tryOrStopSparkContext(Utils.scala:1319)
    at org.apache.spark.ContextCleaner.org$apache$spark$ContextCleaner$$keepCleaning(ContextCleaner.scala:178)
    at org.apache.spark.ContextCleaner$$anon$1.run(ContextCleaner.scala:73)

Ответы [ 2 ]

2 голосов
/ 16 марта 2019

Вы пробовали что-то вроде:

import org.apache.spark.sql.SparkSession 

object main extends App {

  val spark = SparkSession
    .builder()
    .appName("myApp")
    .config("master", "local[*]")
    .getOrCreate()

  println("Hello World")
  println(spark.version())

  spark.stop()
}
0 голосов
/ 16 марта 2019

Так что я не уверен, что именно решило проблему, потому что после выполнения ряда sbt команд и изменений я в конечном итоге смог запустить свое приложение.

Вот список того, что я сделал, но я думаю, что команда sbt на шаге # 4, возможно, была отсутствующей частью:

  1. Изменено с version := 2.12.5 на version := 2.11.12 в build.sbt. Я полагаю, что Apache spark поддерживает scala 2.12, но IntelliJ или sbt, по-видимому, испытывают трудности с получением пакетов.
  2. Создан файл build.properties в корневом каталоге project и добавлена ​​строка sbt.version = 0.13.17, поскольку sbt 1.0 явно не подходит для работы с репозиторием spark-core.
  3. Выполнил следующие sbt команды в следующем порядке: reload plugins, update, reload.
  4. Одной из последних попыток было запустить команду sbt package, которая Создает jar-файл, содержащий файлы в src / main / resources и классы, скомпилированные из src / main / scala и src / main / java. После этого (и, возможно, полной перестройки / аннулирования кэша) я заметил, что отсутствующие пакеты Scala появились в моем External Libraries.
  5. Несколько раз Rebuild и Invalidate Cache/Restart.
...