blu*_*sky 21 scala apache-spark
在Scala中,我可以使用以下方法展平集合:
val array = Array(List("1,2,3").iterator,List("1,4,5").iterator)
//> array : Array[Iterator[String]] = Array(non-empty iterator, non-empty itera
//| tor)
array.toList.flatten //> res0: List[String] = List(1,2,3, 1,4,5)
Run Code Online (Sandbox Code Playgroud)
但是我如何在Spark中执行类似的操作?
阅读API文档http://spark.apache.org/docs/0.7.3/api/core/index.html#spark.RDD似乎没有提供此功能的方法?
sam*_*est 36
使用flatMap和identity Predef,这比使用更具可读性x => x,例如
myRdd.flatMap(identity)
Run Code Online (Sandbox Code Playgroud)
Jos*_*sen 31
尝试使用身份地图函数(y => y)的flatMap :
scala> val x = sc.parallelize(List(List("a"), List("b"), List("c", "d")))
x: org.apache.spark.rdd.RDD[List[String]] = ParallelCollectionRDD[1] at parallelize at <console>:12
scala> x.collect()
res0: Array[List[String]] = Array(List(a), List(b), List(c, d))
scala> x.flatMap(y => y)
res3: org.apache.spark.rdd.RDD[String] = FlatMappedRDD[3] at flatMap at <console>:15
scala> x.flatMap(y => y).collect()
res4: Array[String] = Array(a, b, c, d)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34108 次 |
| 最近记录: |