每个数据帧分区Spark 2.0的第一个元素

时间:2016-09-28 09:00:04

标签: apache-spark spark-dataframe partition

我需要检索每个数据帧分区的第一个元素。 我知道我需要使用mapPartitions,但我不清楚如何使用它。

注意:我使用的是Spark2.0,数据框已经过排序。

1 个答案:

答案 0 :(得分:1)

我认为它看起来应该如下:

import org.apache.spark.sql.catalyst.encoders.RowEncoder
...
implicit val encoder = RowEncoder(df.schema)
val newDf = df.mapPartitions(iterator => iterator.take(1))

这将从DataFrame中的每个分区获取1个元素。然后你可以收集所有数据到你的驱动程序,即:

nedDf.collect()

这将返回一个数组,其中包含许多等于分区数的元素。

更新

UPD 以支持Spark 2.0