簡體   English   中英

在快照工作中隨機獲取java.lang.ClassCastException

[英]Randomly getting java.lang.ClassCastException in snappy job

用Scala編寫的快照作業會異常中止:java.lang.ClassCastException:com ..... $ Class1無法轉換為com ..... $ Class1。

Class1是存儲在RDD中的自定義類。 有趣的是,在投射相同的類時會拋出此錯誤。 到目前為止,尚未找到任何模式。

在這項工作中,我們從hbase獲取數據,使用Dataframes通過分析元數據豐富數據,並將其推送到SnappyData中的表。 我們正在使用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.execution.BufferedRowIterator處強制轉換為org.apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIterator.processNext(Generated.java:86)。在org.apache.spark.sql.execution.WholeStageCodegenRDD $$ anon $ 2上的hasNext(BufferedRowIterator.java:43)在org.apache.spark.sql.execution.WholeStageCodegenRDD $$ anon $ 1上的hasNext(WholeStageCodegenExec.scala:571)。在org.apache.spark.sql.execution.columnar.InMemoryRelation $$ anonfun $ 1 $ anan $ 1.hasNext(InMemoryRelation.scala:132)上的org.apache.spark.storage.memory上的hasNext(WholeStageCodegenExec.scala:514)。 org.apache.spark.storage.BlockManager $$ anonfun $ doPutIterator $ 1.apply(BlockManager.scala:1006)的org.apache.spark.storage.BlockManager $$的MemoryStore.putIteratorAsValues(MemoryStore.scala:233) 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.rdd.RDD.getOrCompute(RDD.scala:335)於org.apache.spark.rdd.RDD的org.apache.spark.storage.BlockManager.getOrElseUpdate(BlockManager.scala:700)處。 org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:41)處的迭代器(RDD.scala:286)org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)處的org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:41) org.apache.spark.sql.execution.WholeStageCodegenRDD.computeInternal(WholeStageCodegenExec.scala:557)上的.spark.rdd.RDD.iterator(RDD.scala:288)在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:2 88)在org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:41)在org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)在org.apache.spark.rdd.RDD org上的org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:103)的.iterator(RDD.scala:288)在org.org的org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:58) org.apache.spark.executor.Executor $ TaskRunner.run(Executor.scala:326)上的apache.spark.scheduler.Task.run(Task.scala:126)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor。 java:1149),位於org.apache.spark.executor.SnappyExecutor $$ anon $ 2 $$ anon $ 3.run(SnappyExecutor.scala:57),位於java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)處。在java.lang.Thread.run(Thread.java:748)

類在名稱上不是唯一的。 它們在名稱和類加載器上是唯一的。

當您在應用的各個部分之間傳遞數據時,您會看到這種ClassCastException,其中一個或兩個部分都在單獨的類加載器中加載。

您可能需要清理類路徑,可能需要從同一類加載器解析類,或者可能必須序列化數據(尤其是如果您具有依賴於在運行時重新加載代碼的功能)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM