Pyspark的效能調校將會分為四的主題說明
先來簡單說明一下什麼是資料傾斜吧~
相信大家還記得Pyspark是建構在一個平行運算的架構上,當然所謂平行運算意味著有多個處理器可以進行處理,所以所謂資料傾斜就是指資料放置位置不平均,
舉個比較生活化的例子,
就像是你上班的時候主管工作量分配不均,導致你累死,但是你的同事天天都在打game一樣,既沒有效率又浪費資源,所以要怎麼樣才能夠解決這樣的問題呢?
這時候合理的分配你的工作量就很重要,所以通常都會是藉由key去分配你的Data,當key可以非常平均的做分散時,意味著他可以分配到每一個節點去做處理
distinct、groupByKey、reduceByKey、aggregateByKey、join
repartition
來重新給定分區位置import pyspark.sql.functions as F
df = df.withColumn('apple', F.rand())
df = df.repartition(5, 'apple')
在處理資料時多多少少都會因為資料傾斜的問題困擾我們許久,在處理少量資料的時候還可以單純依靠加大記憶體,或是節點的數量來解決問題,不過一旦遇到大量資料時,這些方法可能也就不了你,所以還是得了解資料,才能夠幫助你成為一個更有效率的data engineer~
如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言給我!喜歡的話,也歡迎按讚訂閱!
我是 Vivi,一位在雲端掙扎的資料工程師!我們下一篇文章見!Bye Bye~
【本篇文章將同步更新於個人的 Medium,期待與您的相遇!】