作者:过去无法回去 | 来源:互联网 | 2023-01-20 10:30
我想查看如何获取有关每个分区的信息,例如总数.当使用部署模式作为纱线群集提交Spark作业以便在控制台上记录或打印时,驱动程序端的每个分区中的记录数.
1> hi-zir..:
我会使用内置功能.它应该尽可能高效:
import org.apache.spark.sql.functions.spark_partition_id
df.groupBy(spark_partition_id).count
您可以使用`df.withColumn("partition_id",spark_partition_id).groupBy("partition_id").count` for 1.6
2> Raphael Roth..:
你可以得到每个分区的记录数,如下所示:
df
.rdd
.mapPartitionsWithIndex{case (i,rows) => Iterator((i,rows.size))}
.toDF("partition_number","number_of_records")
.show
但是这也会自动启动Spark Job(因为必须通过spark读取文件才能获得记录数).
Spark也可能会读取hive表统计信息,但我不知道如何显示这些元数据.