2017-08-08 63 views
0

我在使用CassandraRow類型的作業之間共享RDD,但現在我將多個RDD一起加入,因此案例類更有意義。從案例分類中命名爲RDD

我將我的RDD保存爲如下&然後在新工作中檢索它。這與類型CassandraRow很好地工作。 CData在兩個作業中都是相同的案例類。

runtime.namedObjects.update("rdd:session", NamedRDD(mergedRDD, forceComputation = false, storageLevel = StorageLevel.MEMORY_ONLY)) 
// val mergedRDD: RDD[CData] 

val NamedRDD(dbDayRDD, _, _) = runtime.namedObjects.get[NamedRDD[CData]]("rdd:session").get 

Promos Job Failed { 

    "duration": "0.545 secs", 

    "classPath": "spark.jobserver.Promos", 

    "startTime": "2017-08-08T18:07:02.131Z", 

    "context": "dailycontext", 

    "result": { 

    "message": "java.lang.ClassCastException: spark.jobserver.SessionNew$CData$3 cannot be cast to spark.jobserver.Promos$CData$3", 


    "errorClass": "java.lang.Throwable", 

回答

0

原來,您不能在新文件中重新聲明任何案例類。確切的路徑必須匹配,以使它們被認爲是相同的,或者它試圖將它投射到它本身不起作用。我只是將我的所有案例類定義移動到一個新文件中,然後將該文件導入到每個作業中。