GETNUMPARTITIONS()和SPARK_PARTITION_ID()返回不同的值

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

它给了我3个分区,每个分区每行。我为何会发生这种情况感到困惑。

然后我使用的环境是Databricks社区版(集群有1个具有2个核心的执行器)
创建数据框的代码:

data = [(1, "Alice", 25), (2, "Bob", 40), (3, "Charlie", 65)] df=spark.createDataFrame(data,['Id','Name','Age']) from pyspark.sql.functions import spark_partition_id df.withColumn("partition_id", spark_partition_id()).groupBy("partition_id").count().display()

getNumPartitions()
将显示Spark当前有多少个分区,无论该分区中是否有任何数据。
pyspark databricks
1个回答
0
投票
df.withColumn("partition_id", F.spark_partition_id()).rdd.glom().collect()

对于我来说,它显示了这一点。您可以在数组中看到8个元素,总计8个分区。只有3个分区具有数据,5个是空分区。
[[], [], [Row(Id=1, Name='Alice', Age=25, partition_id=2)], [], [], [Row(Id=2, Name='Bob', Age=40, partition_id=5)], [], [Row(Id=3, Name='Charlie', Age=65, partition_id=7)]]

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.