簡體   English   中英

收集后從火花映射操作獲取空Graph字段

[英]getting null Graph fields from spark map operation after collect

將Java + Scala與apache Spark結合使用。 我在javaRDDs中有一些String數據( textdata變量),我使用助手類將其轉換為scala圖:

SparkConf = new SparkConf(true); // also set parameters, etc
JavaSparkContext sc =  new JavaSparkContext(conf);
JavaRDD<Graph<String, Object>> graphs = textdata.map(new GraphConverterClass(JavaSparkContext.toSparkContext(sc)));

List<Graph<String,Object>> graphsList = graphs.collect(); 

轉換器類實現Function接口,因此有一個調用:

public Graph<String, Object> call(String data)
{
 Graph<String,object> mygraph = someFunc(data,sc);
 return mygraph;
}

當我運行它時,在轉換器類內部,我可以看到mygraph結果,這很好。

但是,在列表中我收集了驅動程序,盡管圖的數量正確,但每個圖的頂點和邊字段均為空。

在上述情況下,使用另一個虛擬類代替Graph可以很好地工作,即保留其字段的值。

那么為什么圖形對象沒有正確收集?

鑒於textData是RDD,因此不支持使用通過SparkContext關閉的map函數。

SparkContext是僅位於驅動程序中的對象,在執行程序上為“ null”。 (令人驚訝的是它沒有給出SerializationException

可以在該操作的結果類型上發現相同的問題: JavaRDD<Graph<String, Object>>嵌套的RDD在概念上是未定義的。

一種可能的解決方案是從創建頂點和邊緣RDD並使用Graph構造函數構建目標圖的角度重新考慮該過程。

暫無
暫無

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

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