Исключение, возвращаемое при сборе класса обращения из RDD в Spark 2.0

#apache-spark #rdd #case-class

#apache-spark #rdd #класс case

Вопрос:

Это может быть тривиально, но я не могу понять, что я делаю не так. Похоже, что при сборе класса case из RDD возникают некоторые проблемы.

 case class Test(val1 :Double, val2 :Double)

val myrdd = sc.makeRDD(Array(Test(1,1),Test(1,1),Test(1,1),Test(1,1)))

myrdd.collect.foreach(x => println(x.val1))
  

ВОЗВРАТ:

 stderr]:> failure running last command: org.apache.spark.SparkException: Job aborted due to stage failure: ClassNotFound with classloader: sun.misc.Launcher$AppClassLoader@5d6f64b1
  at org.apache.spark.scheduler.DAGScheduler.org$apache$spark$scheduler$DAGScheduler$$failJobAndIndependentStages(DAGScheduler.scala:1450)
at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1438)
  at org.apache.spark.scheduler.DAGScheduler$$anonfun$abortStage$1.apply(DAGScheduler.scala:1437)
  at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
  at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
...
  

Если я сопоставлю класс case с кортежем перед сбором, все будет работать нормально. Попытался импортировать класс case из библиотеки в classpath вместо его объявления, та же ошибка, безуспешно. Это отлично работает в оболочке spark в локальном режиме.
Я запускаю Spark 2.0 в кластере mesos. Любая помощь приветствуется.

Комментарии:

1. Я не могу воспроизвести ошибку с заданной информацией

2. Забыл упомянуть — он отлично работает в локальном режиме оболочки spark. Где он прерывается, находится в кластере, в котором работает Spark на Mesos. Я отредактирую вопрос.