tutorial spark software learn for data big scala apache-spark

software - spark scala tutorial



Cómo aplanar una colección con Spark/Scala? (2)

Pruebe flatMap con una función de mapa de identidad ( y => y ):

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)

En Scala puedo aplanar una colección usando:

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)

Pero, ¿cómo puedo hacer algo similar en Spark?

Al leer el API doc http://spark.apache.org/docs/0.7.3/api/core/index.html#spark.RDD no parece haber un método que proporcione esta funcionalidad.


Utilice flatMap y la identity Predef , esto es más legible que usando x => x , por ejemplo

myRdd.flatMap(identity)