Dataframe 获取pyspark中的分区数

Dataframe 获取pyspark中的分区数,dataframe,pyspark,rdd,hive-partitions,Dataframe,Pyspark,Rdd,Hive Partitions,我从一个表中选择all并使用Pyspark从中创建一个数据帧(df)。其分区为: partitionBy('date', 't', 's', 'p') 现在我想通过使用 df.rdd.getNumPartitions() 但它返回的分区数(15642个)比预期的多(18个分区): 在配置单元中显示分区命令: date=2019-10-02/t=u/s=u/p=s date=2019-10-03/t=u/s=u/p=s date=2019-10-04/t=u/s=u/p=s d

我从一个表中选择all并使用Pyspark从中创建一个数据帧(df)。其分区为:

  partitionBy('date', 't', 's', 'p')
现在我想通过使用

  df.rdd.getNumPartitions()
但它返回的分区数(15642个)比预期的多(18个分区):

在配置单元中显示分区命令:

 date=2019-10-02/t=u/s=u/p=s
 date=2019-10-03/t=u/s=u/p=s
 date=2019-10-04/t=u/s=u/p=s
 date=2019-10-05/t=u/s=u/p=s
 date=2019-10-06/t=u/s=u/p=s
 date=2019-10-07/t=u/s=u/p=s
 date=2019-10-08/t=u/s=u/p=s
 date=2019-10-09/t=u/s=u/p=s
 date=2019-10-10/t=u/s=u/p=s
 date=2019-10-11/t=u/s=u/p=s
 date=2019-10-12/t=u/s=u/p=s
 date=2019-10-13/t=u/s=u/p=s
 date=2019-10-14/t=u/s=u/p=s
 date=2019-10-15/t=u/s=u/p=s
 date=2019-10-16/t=u/s=u/p=s
 date=2019-10-17/t=u/s=u/p=s
 date=2019-10-18/t=u/s=u/p=s
 date=2019-10-19/t=u/s=u/p=s

你知道为什么分区的数量这么大吗?如何获得预期的分区数(18)

我找到了一个更简单的方法:

>>> t  = spark.sql("show partitions my_table")
>>> t.count()
18  
rdd中的分区数不同于配置单元分区。 Spark通常根据集群中执行者的数量对rdd进行分区,以便每个执行者公平地共享任务。 您可以使用sc.parallelize(,)、df.repartition()或coalesce()来控制rdd分区

spark.sql("show partitions hivetablename").count()