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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。