2016-03-18 109 views
0

對不起,關於Spark的基本問題。我可以在Spark的調用函數中使用與原始類型不同的Java對象嗎?舉例來說,假設我有類似的東西:Spark的通話功能

JavaRDD<String> input = sc.textFile(dataFile); 
    JavaRDD<String> output; 
    output = input.map(new Function<String, String>() { public String call(String s) throws MalformedURLException { 
      SystemConfiguration config = new SystemConfiguration(); 

....

如果我刪除我自己的類的實例SystemConfiguratin它工作正常,但它裏面不起作用(火花完成失敗)。 請你能闡明這一點嗎?非常感謝

+1

請參閱:如何創建[mcve]? – zero323

+0

可能是你的SystemConfiguration類裏面出了點問題 – subodh

回答

0

只要您在轉換內創建的對象是Serializable或聲明瞭@transient lazy(對於不可序列化的對象),您就很好。

+0

所以,如果我的對象不是可序列化的或者沒有聲明的@transient lazy我無事可做...... – chufabit

+0

如果它不是可序列化的,那麼你必須聲明它爲@transient lazy 。如果它是可序列化的,那麼你不需要以任何方式修飾你的對象實例,並像通常那樣使用它。 – urug