PySpark DataFrame 的 coalesce(~)
方法在不进行混洗的情况下减少了 PySpark DataFrame 的分区数量。
参数
1. num_partitions
| int
将 PySpark DataFrame 的数据分割成的分区数。
返回值
一个新的 PySpark 数据帧。
例子
考虑以下PySpark DataFrame:
df = spark.createDataFrame([["Alex", 20], ["Bob", 30], ["Cathy", 40]], ["name", "age"])
df.show()
+-----+---+
| name|age|
+-----+---+
| Alex| 20|
| Bob| 30|
|Cathy| 40|
+-----+---+
默认分区数量由您的 PySpark 配置决定。就我而言,默认分区数是:
df.rdd.getNumPartitions()
8
我们可以使用底层 RDD 的 glom()
方法查看 PySpark DataFrame 每个分区的实际内容:
df.rdd.glom().collect()
[[],
[],
[Row(name='Alex', age=20)],
[],
[],
[Row(name='Bob', age=30)],
[],
[Row(name='Cathy', age=40)]]
我们可以看到我们确实有 8 个分区,其中 3 个包含 Row
。
在不进行混洗的情况下减少 PySpark DataFrame 的分区数量
要减少 DataFrame 的分区数量而不进行混排,请使用 coalesce(~)
:
df_new = df.coalesce(2)
df_new.rdd.glom().collect()
[[Row(name='Alex', age=20)],
[Row(name='Bob', age=30), Row(name='Cathy', age=40)]]
在这里,我们可以看到我们现在只有 2 个分区!
注意
方法 repartition(~)
和 coalesce(~)
都用于更改分区数量,但这里有一些显著差异:
-
repartition(~)
通常会导致洗牌操作,而coalesce(~)
则不会。这意味着coalesce(~)
的成本低于repartition(~)
,因为数据不必在工作节点之间传输太多。 -
coalesce(~)
专门用于减少分区数量。
相关用法
- Python Pandas DataFrame copy方法用法及代码示例
- Python PySpark DataFrame collect方法用法及代码示例
- Python Pandas DataFrame corrwith方法用法及代码示例
- Python PySpark DataFrame corr方法用法及代码示例
- Python Pandas DataFrame convert_dtypes方法用法及代码示例
- Python Pandas DataFrame combine方法用法及代码示例
- Python Pandas DataFrame columns属性用法及代码示例
- Python PySpark DataFrame cov方法用法及代码示例
- Python Pandas DataFrame count方法用法及代码示例
- Python PySpark DataFrame colRegex方法用法及代码示例
- Python PySpark DataFrame columns属性用法及代码示例
- Python PySpark DataFrame count方法用法及代码示例
- Python Pandas DataFrame corr方法用法及代码示例
- Python Pandas DataFrame combine_first方法用法及代码示例
- Python Pandas DataFrame cov方法用法及代码示例
- Python Pandas DataFrame clip方法用法及代码示例
- Python Pandas DataFrame cummax方法用法及代码示例
- Python Pandas DataFrame cumprod方法用法及代码示例
- Python Pandas DataFrame cummin方法用法及代码示例
- Python Pandas DataFrame cumsum方法用法及代码示例
- Python Pandas DataFrame empty属性用法及代码示例
- Python Pandas DataFrame pop方法用法及代码示例
- Python Pandas DataFrame nsmallest方法用法及代码示例
- Python Pandas DataFrame sample方法用法及代码示例
- Python Pandas DataFrame items方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark DataFrame | coalesce method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。