1
我有一個RDD的結構爲RDD:[String A,List(Strings Bs)]
我想映射它,以便我得到一個RDD:[String A,String B]
,以便列表中的每個元素將匹配字符串A.什麼是最有效的方法呢?斯卡拉/火花映射[字符串,列表[字符串]]到字符串對
我目前使用flatMapValues
,這會是最有效的方法嗎? (我有龐大的數據集)
我有一個RDD的結構爲RDD:[String A,List(Strings Bs)]
我想映射它,以便我得到一個RDD:[String A,String B]
,以便列表中的每個元素將匹配字符串A.什麼是最有效的方法呢?斯卡拉/火花映射[字符串,列表[字符串]]到字符串對
我目前使用flatMapValues
,這會是最有效的方法嗎? (我有龐大的數據集)
rdd.flatMapValues(identity)
應該完成工作。
這應該是一個非常有效和簡單的方法。 爲了優化性能,您可以將其與使用mapPartitions
的實現進行比較,並從中選擇更好的。我不希望有這麼大的差別,因爲無論如何都需要創建封裝器對象。
rdd.mapPartitions(iter => iter.flatMap(elem => elem._2.map(v => (elem._1,v)))
看起來像您正在使用Java API。請指定您使用的API。 –
是的... flatMapValues是這種事情的最佳途徑之一。 –
除了flatMapValues之外,您是否從共同組獲得RDD?如果是這樣,使用連接,而不是這個中間RDD將產生你想要的。 –