获取pyspark中的分区数
get number of partitions in pyspark
我 select 全部来自 table 并使用 Pyspark 从中创建数据框 (df)。分区为:
partitionBy('date', 't', 's', 'p')
现在我想通过使用
获取分区数
df.rdd.getNumPartitions()
但它 returns 比预期的(18 个分区)大得多(15642 个分区):
配置单元中的显示分区命令:
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
spark.sql("show partitions hivetablename").count()
rdd中的分区数与hive分区不同。
Spark 通常会根据集群中执行程序的数量对您的 rdd 进行分区,以便每个执行程序都能公平地分配任务。
您可以使用 sc.parallelize(, )) 、 df.repartition() 或 coalesce().
来控制 rdd 分区
我 select 全部来自 table 并使用 Pyspark 从中创建数据框 (df)。分区为:
partitionBy('date', 't', 's', 'p')
现在我想通过使用
获取分区数 df.rdd.getNumPartitions()
但它 returns 比预期的(18 个分区)大得多(15642 个分区):
配置单元中的显示分区命令:
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
spark.sql("show partitions hivetablename").count()
rdd中的分区数与hive分区不同。 Spark 通常会根据集群中执行程序的数量对您的 rdd 进行分区,以便每个执行程序都能公平地分配任务。 您可以使用 sc.parallelize(, )) 、 df.repartition() 或 coalesce().
来控制 rdd 分区