распространять ошибку sparkContext на кластер пряжи - PullRequest
0 голосов
/ 27 февраля 2019

Мой код работает в локальном режиме, но с пряжей (в режиме клиента или кластера) он останавливается с этой ошибкой:

Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 0.0 failed 4 times, most recent failure: Lost task 1.3 in stage 0.0 (TID 6, hadoopdatanode, executor 1): java.io.IOException: java.lang.NullPointerException
    at org.apache.spark.util.Utils$.tryOrIOException(Utils.scala:1353)
    at org.apache.spark.rdd.ParallelCollectionPartition.readObject(ParallelCollectionRDD.scala:70)

Я не понимаю, почему он работает в локальном режиме, но не с пряжей,Проблема возникает с объявлением sparkContext внутри rdd.foreach.Мне нужен sparContext внутри executeAlgorithm, и поскольку sparcontext не сериализуем, я должен получить его внутри rdd.foreach

, вот мой основной объект:

 def main(args: Array[String]): Unit = {

    val sparkConf = new SparkConf().setAppName("scTest")
    val sparkContext = new SparkContext(sparkConf)

    val sparkSession = org.apache.spark.sql.SparkSession.builder
      .appName("sparkSessionTest")
      .getOrCreate

    val IDList = List("ID1","ID2","ID3")

    val IDListRDD = sparkContext.parallelize(IDList)

    IDListRDD.foreach(idString => {

      val sc = SparkContext.getOrCreate(sparkConf)

      executeAlgorithm(idString,sc)    

    })

Заранее спасибо

1 Ответ

0 голосов
/ 27 февраля 2019

Блок rdd.foreach{} обычно должен выполняться в исполнителе где-то в вашем кластере.В локальном режиме драйвер и исполнитель совместно используют один и тот же экземпляр JVM, обращаясь к другим классам / экземплярам, ​​находящимся в динамической памяти, что вызывает непредсказуемое поведение.Поэтому вы не можете и не должны совершать вызовы с узла-исполнителя на объекты драйвера, такие как SparkContext, RDD, DataFrames и т. Д., Пожалуйста, порекомендуйте следующие ссылки для получения дополнительной информации:

Apache Spark: когда нетиспользовать mapPartition и foreachPartition?

Вызывается: java.lang.NullPointerException в org.apache.spark.sql.Dataset

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