【发布时间】:2018-07-25 05:09:00
【问题描述】:
是否可以在 RDD 中展平列表?例如转换:
val xxx: org.apache.spark.rdd.RDD[List[Foo]]
到:
val yyy: org.apache.spark.rdd.RDD[Foo]
如何做到这一点?
【问题讨论】:
标签: scala apache-spark
是否可以在 RDD 中展平列表?例如转换:
val xxx: org.apache.spark.rdd.RDD[List[Foo]]
到:
val yyy: org.apache.spark.rdd.RDD[Foo]
如何做到这一点?
【问题讨论】:
标签: scala apache-spark
val rdd = sc.parallelize(Array(List(1,2,3), List(4,5,6), List(7,8,9), List(10, 11, 12)))
// org.apache.spark.rdd.RDD[List[Int]] = ParallelCollectionRDD ...
val rddi = rdd.flatMap(list => list)
// rddi: org.apache.spark.rdd.RDD[Int] = FlatMappedRDD ...
// which is same as rdd.flatMap(identity)
// identity is a method defined in Predef object.
// def identity[A](x: A): A
rddi.collect()
// res2: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
【讨论】:
您只需要将其展平,但由于 RDD 上没有明确的“展平”方法,您可以这样做:
rdd.flatMap(identity)
【讨论】:
rdd 是什么,identity 是什么?您的答案如何转化为我的问题中的示例?
xxx.flatMap(identity)。 identity 是一个预定义的函数,正如它所说的,身份函数。不过,您可能已经知道这一点。