获取pyspark中的分区数

问题描述 投票:0回答:2

我从表中选择所有内容,然后使用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)

dataframe pyspark rdd hive-partitions
2个回答
0
投票

我找到了绕行弯道的简便方法:

>>> t  = spark.sql("show partitions my_table")
>>> t.count()
18  

0
投票
spark.sql("show partitions hivetablename").count()

rdd中的分区数不同于配置单元分区。Spark通常根据群集中执行程序的数量对rdd进行分区,以便每个执行程序都能公平地分担任务。您可以使用sc.parallelize(,)),df.repartition()或coalesce()来控制rdd分区。

© www.soinside.com 2019 - 2024. All rights reserved.