簡體   English   中英

Spark 1.5.1,Scala 2.10.5:如何擴展RDD [Array [String],Vector]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM