在活泼的工作中随机获得 java.lang.ClassCastException
Randomly getting java.lang.ClassCastException in snappy job
用 Scala 编写的 Snappy 作业异常中止:
java.lang.ClassCastException: com.....$Class1 无法转换为 com.....$Class1。
Class1 是存储在 RDD 中的自定义 class。有趣的是这个错误是在投射相同 class 时抛出的。到目前为止,没有发现任何模式。
在作业中,我们从 hbase 获取数据,使用 Dataframes 使用分析元数据丰富数据,并将其推送到 SnappyData 中的 table。我们正在使用 Snappydata 1.2.0.1.
不确定为什么会这样。
下面是堆栈跟踪:
作业因阶段失败而中止:阶段 42.0 中的任务 76 失败 4 次,最近一次失败:阶段 42.0 中丢失任务 76.3(TID 3550,主机名,执行者 XX.XX.x.xxx(10360):7872):java.lang.ClassCastException : 不能转换为
在 org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.processNext(generated.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)
在 java.lang.Thread.run(Thread.java:748)
类 的名称不是唯一的。它们的名称+类加载器是独一无二的。
当您在一个或两个部分加载到单独的类加载器中的应用程序的各个部分之间传递数据时,就会发生您所看到的那种 ClassCastException。
您可能需要清理您的类路径,您可能需要从同一个类加载器解析 类,或者您可能必须序列化数据(特别是如果您的功能依赖于重新加载代码运行)。
用 Scala 编写的 Snappy 作业异常中止: java.lang.ClassCastException: com.....$Class1 无法转换为 com.....$Class1。
Class1 是存储在 RDD 中的自定义 class。有趣的是这个错误是在投射相同 class 时抛出的。到目前为止,没有发现任何模式。
在作业中,我们从 hbase 获取数据,使用 Dataframes 使用分析元数据丰富数据,并将其推送到 SnappyData 中的 table。我们正在使用 Snappydata 1.2.0.1.
不确定为什么会这样。
下面是堆栈跟踪: 作业因阶段失败而中止:阶段 42.0 中的任务 76 失败 4 次,最近一次失败:阶段 42.0 中丢失任务 76.3(TID 3550,主机名,执行者 XX.XX.x.xxx(10360):7872):java.lang.ClassCastException : 不能转换为 在 org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIterator.processNext(generated.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) 在 java.lang.Thread.run(Thread.java:748)
类 的名称不是唯一的。它们的名称+类加载器是独一无二的。
当您在一个或两个部分加载到单独的类加载器中的应用程序的各个部分之间传递数据时,就会发生您所看到的那种 ClassCastException。
您可能需要清理您的类路径,您可能需要从同一个类加载器解析 类,或者您可能必须序列化数据(特别是如果您的功能依赖于重新加载代码运行)。