[英]Spark 1.5.1, Scala 2.10.5: how to expand an RDD[Array[String], Vector]
我在Scala 2.10.5中使用Spark 1.5.1
我對RDD[Array[String], Vector]
的每個元素都有一個RDD[Array[String], Vector]
:
Array[String]
中的每個String
都與Vector
結合起來以創建一個元組(String, Vector)
,此步驟將導致從初始RDD的每個元素創建多個元組 目標是通過建立元組的RDD結束: RDD[(String, Vector)]
,此RDD包含上一步中創建的所有元組。
謝謝
考慮一下:
rdd.flatMap { case (arr, vec) => arr.map( (s) => (s, vec) ) }
(第一個flatMap
允許您獲得RDD[(String, Vector)]
作為輸出,而不是map
,而獲得RDD[Array[(String, Vector)]]
)
你有嘗試過嗎?
// rdd: RDD[Array[String], Vector] - initial RDD
val new_rdd = rdd
.flatMap {
case (array: Array[String], vec: Vector) => array.map(str => (str, vec))
}
玩具示例(我在spark-shell中運行它):
val rdd = sc.parallelize(Array((Array("foo", "bar"), 100), (Array("one", "two"), 200)))
val new_rdd = rdd
.map {
case (array: Array[String], vec: Int) => array.map(str => (str, vec))
}
.flatMap(arr => arr)
new_rdd.collect
res14: Array[(String, Int)] = Array((foo,100), (bar,100), (one,200), (two,200))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.