我有一個類型爲(Array[breeze.linalg.DenseVector[Double]], breeze.linalg.DenseVector[Double])
的Spark RDD。我希望將它的關鍵字平坦化,將其轉換爲類型爲breeze.linalg.DenseVector[Double], breeze.linalg.DenseVector[Double])
的RDD。我目前在做:拼合RDD的密鑰
val newRDD = oldRDD.flatMap(ob => anonymousOrdering(ob))
anonymousOrdering()的簽名是String => (Array[DenseVector[Double]], DenseVector[Double])
。
它返回type mismatch: required: TraversableOnce[?]
。 Python代碼做同樣的事情是:
newRDD = oldRDD.flatMap(lambda point: [(tile, point) for tile in anonymousOrdering(point)])
如何在Scala中做同樣的事情?我通常使用flatMapValues
但在這裏我需要扁平化的關鍵。
你能指定'anonymousOrdering'的簽名嗎?同樣在扁平化之後,RDD的類型在你的問題中是相同的。那是故意的嗎? –
添加了簽名(註釋在第一個片段中),我的意圖是將包含(Array(1,2),3)的RDD轉換爲包含(1,3)|的RDD。 (2,3)。在這個例子中,我用整數代替了DenseVector類型。 –