使用 df.rdd.getNumPartitions()
,我们可以得到分区数。但是我们如何得到分区呢?
我还尝试从文档和所有属性(使用 dir(df)
)Dataframe的。但是,我找不到任何api来提供分区 repartitioning
, coalesce
, getNumPartitions
都是我能找到的。
我读了这篇文章并推断spark不知道分区键。我的疑问是,如果它不知道分区键,因此也不知道分区,那么它怎么知道它们的计数呢?如果可以,如何确定分区?
使用 df.rdd.getNumPartitions()
,我们可以得到分区数。但是我们如何得到分区呢?
我还尝试从文档和所有属性(使用 dir(df)
)Dataframe的。但是,我找不到任何api来提供分区 repartitioning
, coalesce
, getNumPartitions
都是我能找到的。
我读了这篇文章并推断spark不知道分区键。我的疑问是,如果它不知道分区键,因此也不知道分区,那么它怎么知道它们的计数呢?如果可以,如何确定分区?
2条答案
按热度按时间cqoc49vn1#
Pypark提供
spark_partition_id()
功能。spark\u分区\u id()
分区id的列。
注意:这是不确定的,因为它依赖于数据分区和任务调度。
分区的编号从零到
n-1
哪里n
是你的电话号码吗getNumPartitions()
.这就是你想要的吗?或者你真的是指Hive分割?
ej83mcc02#
不如用下面的方法检查分区包含什么
mapPartitionsWithIndex
这段代码适用于一些小型数据集