它给了我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当前有多少个分区,无论该分区中是否有任何数据。
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)]]