每个数据框分区的第一个元素 Spark 2.0
First element of each dataframe partition Spark 2.0
我需要检索每个数据帧分区的第一个元素。
我知道我需要使用 mapPartitions 但我不清楚如何使用它。
注意:我用的是Spark2.0,dataframe是排序的
我认为它应该如下所示:
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()
这将为您 return 一个数组,其元素数量等于您的分区数量。
UPD 已更新以支持 Spark 2.0
我需要检索每个数据帧分区的第一个元素。 我知道我需要使用 mapPartitions 但我不清楚如何使用它。
注意:我用的是Spark2.0,dataframe是排序的
我认为它应该如下所示:
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()
这将为您 return 一个数组,其元素数量等于您的分区数量。
UPD 已更新以支持 Spark 2.0