經過了昨天的介紹,相信大家都很了解join了,join是個常用的function,但他其實是一個效能很差得執行方式,主要原因是他會將所有資料重新洗牌到同一個node上(還記得嗎,Pyspark其實是一個分散式架構)
那我們可以怎麼做去提高他的效率並減少運算資源的使用呢
這邊找到一個方法可以參考看看!
通常都是應用在小資料集join較大的資料集
Pyspark 的機制通常都會是把資料放在不同的node底下,以利進行平行運算,所以當你有兩的DataFrame時,資料將會被分別分配到多個node上面,所以當你使用傳統的join時,他就會需要重新洗牌(shuffle)這些data
在資料洗牌時(Shuffle),可能會因為join key 在不同的node中,要把他拉到同一個node去做處理,所以原本的平行運算就會移動到單一的node上,也因此傳統的join是一個非常沒有效率(很貴)的行為
如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言給我!喜歡的話,也歡迎按讚訂閱!
我是 Vivi,一位在雲端掙扎的資料工程師!我們下一篇文章見!Bye Bye~
【本篇文章將同步更新於個人的 Medium,期待與您的相遇!】