2015-04-23 180 views
1

我有一個RDD的結構爲RDD:[String A,List(Strings Bs)]我想映射它,以便我得到一個RDD:[String A,String B],以便列表中的每個元素將匹配字符串A.什麼是最有效的方法呢?斯卡拉/火花映射[字符串,列表[字符串]]到字符串對

我目前使用flatMapValues,這會是最有效的方法嗎? (我有龐大的數據集)

+0

看起來像您正在使用Java API。請指定您使用的API。 –

+0

是的... flatMapValues是這種事情的最佳途徑之一。 –

+0

除了flatMapValues之外,您是否從共同組獲得RDD?如果是這樣,使用連接,而不是這個中間RDD將產生你想要的。 –

回答

1

rdd.flatMapValues(identity)應該完成工作。

這應該是一個非常有效和簡單的方法。 爲了優化性能,您可以將其與使用mapPartitions的實現進行比較,並從中選擇更好的。我不希望有這麼大的差別,因爲無論如何都需要創建封裝器對象。

rdd.mapPartitions(iter => iter.flatMap(elem => elem._2.map(v => (elem._1,v))) 
相關問題