iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
AI & Data

30天胡搞瞎搞學會pyspark系列 第 18

[ Day 18 ] - Pyspark | 資料集合- broadcast v.s join

  • 分享至 

  • xImage
  •  

經過了昨天的介紹,相信大家都很了解join了,join是個常用的function,但他其實是一個效能很差得執行方式,主要原因是他會將所有資料重新洗牌到同一個node上(還記得嗎,Pyspark其實是一個分散式架構)
那我們可以怎麼做去提高他的效率並減少運算資源的使用呢
這邊找到一個方法可以參考看看!

1. PySpark Broadcast Join

通常都是應用在小資料集join較大的資料集
Pyspark 的機制通常都會是把資料放在不同的node底下,以利進行平行運算,所以當你有兩的DataFrame時,資料將會被分別分配到多個node上面,所以當你使用傳統的join時,他就會需要重新洗牌(shuffle)這些data
在資料洗牌時(Shuffle),可能會因為join key  在不同的node中,要把他拉到同一個node去做處理,所以原本的平行運算就會移動到單一的node上,也因此傳統的join是一個非常沒有效率(很貴)的行為

如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言給我!喜歡的話,也歡迎按讚訂閱!

我是 Vivi,一位在雲端掙扎的資料工程師!我們下一篇文章見!Bye Bye~
【本篇文章將同步更新於個人的 Medium,期待與您的相遇!】


上一篇
[ Day 17 ] - Pyspark | 資料集合 - Spark 7 種 Join
下一篇
[ Day 19 ] - Pyspark | 寫在18天之後 - 底層概念篇 - 惰性執行
系列文
30天胡搞瞎搞學會pyspark30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言