iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
AI & Data

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

[ Day 22 ] - Pyspark | 寫在18天之後 - 底層概念篇 - RDD

  • 分享至 

  • xImage
  •  

今天來説說RDD吧

RDD 是什麼呢?

來舉個比較生活化的例子相信大家都會了解何謂RDD了

世界盃比賽開打了:
想像今天所有參賽的國家都是是一個大集合,每隊都要進行比賽[處理],但是這種短期盃賽,通常都會有時程壓力,而且不可能只有一個場地,所以這時候我們就會將各個國家分成不同的partitiony在不同的場地去進行分組比賽,
在不同的場地進行比賽,意味著可以同一個時段有多場比賽[達到平行比賽的目的]
也可以加速比賽結果的產生[意味著可以提高效率]
但是因為已經分好組了,所以我們不能修改分組[不然會不公平],我們只能透過重新抽籤分組來產生出另一個分組架構
如下圖
https://ithelp.ithome.com.tw/upload/images/20231007/201630298fHeyIzs89.png

生活化的例子簡單的舉完之後,我們來看一下下面的定義:

RDD是一種具有容錯性與高並行性的資料結構,由一堆RDD資料元素所組成,而這一大堆的RDD元素可以被組裝成一到數個的partition(分區),這些partition可以分散在不同的機器上執行[多個場地同時進行],且大多數的情況是存在各個本地機器的Memory中。
每個partition的大小範圍可視任務需要而彈性設定。此外,這些partition在執行相關操作時,是不可改變的(immutable),即:已存在的RDD想要修改資料,只能對該RDD經過轉換產生出另一個新的RDD,不可以直接修改RDD的資料內容。

RDD 必須包含下列項目:

  1. 一組分區 (Set of partitions)

  2. 與Parent RDDs之間的關係列表 (List of dependencies on parent RDD)

  3. Parent RDD的partition是經過哪一種函數計算得到這個RDD的partition (Function to compute a partition given its parent(s))

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

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


上一篇
[ Day 21 ] - Pyspark | 寫在18天之後 - 底層概念篇 - Shuffle
下一篇
[ Day 23 ] - Pyspark | Advance - Persist - 關於效能
系列文
30天胡搞瞎搞學會pyspark30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言