Spark開發-RDD分割槽重新劃分
repartition(numPartitions: Int):RDD[T]
coalesce(numPartitions: Int, shuffle: Boolean = false):RDD[T]
repartition和coalesce是對RDD的分割槽進行重新劃分,repartition只是coalesce介面中shuffle為true的簡易實現,所以這裡主要討論coalesce合併函式該如何設定shuffle引數,這裡分三種情況,假設RDD為N個分割槽,需要重新劃分M個分割槽
1、如果N< M,一般情況下N個分割槽有資料分佈不均的狀況,利用HashPartitioner函式將資料重新分割槽為M個,這時需要將shuffle設定為true
2、如果N>M並且N和M相差不多,比如N是1000,M是100,那麼就可以將N個分割槽中的若干個分割槽合併成一個新的分割槽,最終合併成M個分割槽,這時可以將shuffle的引數設定為false(在shuffle為false的情況下,設定M>N,coalesce是不起作用的),不進行shuffle過程,父RDD和子RDD之間是窄依賴關係
3、如果N>M並且N和M差距懸殊大,比如N是1000,M是1,這個時候如果把shuffle設定成false,由於父子RDD是窄依賴,它們同處在一個stage中,就可能會造成spark程式執行的並行度不夠,從而影響效能,比如在M為1時,由於只有一個分割槽,所以只會有一個任務在執行,為了是coalesce之前的操作有更好的並行度,可以將shuffle引數設定為true。
相關文章
- Spark RDD的預設分割槽數:(spark 2.1.0)Spark
- 深入原始碼理解Spark RDD的資料分割槽原理原始碼Spark
- spark RDD textFile運算元 分割槽數量詳解Spark
- Apache Spark:分割槽和分桶 - NiveditaApacheSpark
- Spark開發-spark執行原理和RDDSpark
- Spark運算元:統計RDD分割槽中的元素及數量Spark
- Spark開發-RDD介面程式設計Spark程式設計
- Win8劃分硬碟分割槽的技巧硬碟
- Hive和Spark分割槽策略HiveSpark
- Spark操作Hive分割槽表SparkHive
- Seven 儲存結構與磁碟劃分 主分割槽交換分割槽的作用!
- Spark RDD APISparkAPI
- spark-RDDSpark
- Spark----RDD運算元分類 DAGSpark
- Win8劃分硬碟分割槽有訣竅硬碟
- Spark學習——分割槽Partition數Spark
- Spark RDD使用詳解--RDD原理Spark
- win7系統怎麼劃分硬碟分割槽Win7硬碟
- partition 分割槽表重新命名
- 分割槽 執行計劃
- Spark - [03] RDD概述Spark
- mysql 分表 分割槽MySql
- 【實驗】【PARTITION】RANGE分割槽表重新命名錶分割槽(Rename Partition)
- linux重新設定分割槽大小Linux
- Spark 的核心概念 RDDSpark
- Spark Basic RDD 操作示例Spark
- linux fdisk 命令 磁碟劃分新的分割槽及掛載Linux
- mysql —— 分表分割槽(1)MySql
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- Spark獲取當前分割槽的partitionIdSpark
- 聊聊Spark的分割槽、並行度 —— 前奏篇Spark並行
- spark-運算元-分割槽運算元Spark
- oracle分割槽表執行計劃Oracle
- 合理規劃您的硬碟分割槽硬碟
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- SparkSQL /DataFrame /Spark RDD誰快?SparkSQL
- Spark RDD 特徵及其依賴Spark特徵
- spark學習筆記--RDDSpark筆記