2017-04-04 24 views
0

我正在使用Spark的GraphX圖形分析庫查看implementation of a certain graph clustering algorithm。我注意到這個實現使用了一個class VertexState和幾個可變(var成員)。使用Spark的GraphX分佈式函數時,可以使用具有可變屬性的節點嗎?

我不知道做這種事情是否會導致不正確的行爲,因爲在分佈式實現中,同一個節點可以在多個處理節點中複製。

我的問題並不是關於這個實踐在這個特定實現中的正確性,而是一般。

也許沒問​​題,只是在頂點集上使用某些函數(如地圖),但如果使用其他涉及一次涉及多個頂點的其他函數(如mapReduceTriplets),可能會出現問題?

回答

1

有可變成員就好了......只要你不要改變它們。任何類型的數據突變都會導致錯誤或不確定的行爲。有些情況下,您可以使用可聚合的可變累加器,但不應該修改存儲在分佈式對象中的數據。

相關問題