Случайно получая java.lang.ClassCastException в быстрой работе - PullRequest
0 голосов
/ 17 января 2019

Быстрая работа, написанная в Scala, прерывается, за исключением: java.lang.ClassCastException: com ..... $ Class1 не может быть приведен к com ..... $ Class1.

Class1 - это пользовательский класс, который хранится в RDD. Интересно, что эта ошибка выдается при сотворении того же класса. Пока что никаких шаблонов не найдено.

В работе мы выбираем данные из hbase, обогащаем данные аналитическими метаданными, используя Dataframes, и помещаем их в таблицу в SnappyData. Мы используем Snappydata 1.2.0.1.

Не уверен, почему это происходит.

Ниже приведена трассировка стека: Задание прервано из-за сбоя этапа: задача 76 на этапе 42.0 завершилась неудачно 4 раза, последний сбой: потерянное задание 76.3 на этапе 42.0 (TID 3550, HostName, исполнитель XX.XX.x.xxx (10360): 7872): java.lang .ClassCastException: нельзя привести к в org.apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIterator.processNext (generate.java:86) в org.apache.spark.sql.execution.BufferedRowIterator.hasNext (BufferedRowIterator.java:43) в org.apache.spark.sql.execution.WholeStageCodegenRDD $$ anon $ 2.hasNext (WholeStageCodegenExec.scala: 571) в org.apache.spark.sql.execution.WholeStageCodegenRDD $$ anon $ 1.hasNext (WholeStageCodegenExec.scala: 514) в org.apache.spark.sql.execution.columnar.InMemoryRelation $$ anonfun $ 1 $$ anon $ 1.hasNext (InMemoryRelation.scala: 132) в org.apache.spark.storage.memory.MemoryStore.putIteratorAsValues ​​(MemoryStore.scala: 233) в org.apache.spark.storage.BlockManager $$ anonfun $ doPutIterator $ 1.apply (BlockManager.scala: 1006) в org.apache.spark.storage.BlockManager $$ anonfun $ doPutIterator $ 1.apply (BlockManager.scala: 997) в org.apache.spark.storage.BlockManager.doPut (BlockManager.scala: 936) в org.apache.spark.storage.BlockManager.doPutIterator (BlockManager.scala: 997) в org.apache.spark.storage.BlockManager.getOrElseUpdate (BlockManager.scala: 700) в org.apache.spark.rdd.RDD.getOrCompute (RDD.scala: 335) в org.apache.spark.rdd.RDD.iterator (RDD.scala: 286) в org.apache.spark.rdd.MapPartitionsRDD.compute (MapPartitionsRDD.scala: 41) в org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala: 324) в org.apache.spark.rdd.RDD.iterator (RDD.scala: 288) в org.apache.spark.sql.execution.WholeStageCodegenRDD.computeInternal (WholeStageCodegenExec.scala: 557) в org.apache.spark.sql.execution.WholeStageCodegenRDD $$ anon $ 1. (WholeStageCodegenExec.scala: 504) в org.apache.spark.sql.execution.WholeStageCodegenRDD.compute (WholeStageCodegenExec.scala: 503) в org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala: 324) в org.apache.spark.rdd.RDD.iterator (RDD.scala: 288) в org.apache.spark.rdd.MapPartitionsRDD.compute (MapPartitionsRDD.scala: 41) в org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala: 324) в org.apache.spark.rdd.RDD.iterator (RDD.scala: 288) в org.apache.spark.scheduler.ShuffleMapTask.runTask (ShuffleMapTask.scala: 103) в org.apache.spark.scheduler.ShuffleMapTask.runTask (ShuffleMapTask.scala: 58) в org.apache.spark.scheduler.Task.run (Task.scala: 126) в org.apache.spark.executor.Executor $ TaskRunner.run (Executor.scala: 326) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) в org.apache.spark.executor.SnappyExecutor $$ anon $ 2 $$ anon $ 3.run (SnappyExecutor.scala: 57) at java.lang.Thread.run (Thread.java:748)

1 Ответ

0 голосов
/ 17 января 2019

Классы не уникальны по имени. Они уникальны по имени + загрузчик классов.

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

Вам может потребоваться очистить ваш путь к классам, вам может потребоваться разрешить классы из одного и того же загрузчика классов или вам может потребоваться сериализовать данные (особенно если у вас есть функции, которые полагаются на перезагрузку кода во время выполнения).

...