#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. Я отредактирую вопрос.