繁体   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