Spark中的RDD究竟怎麼理解?

時間 2021-05-11 11:42:49

1樓:eyeglasses

RDD 是為了分布計算而定義的乙個概念,同hadoop的分布式計算mapreduce差不多,先把資料切割到不同的伺服器上計算,叫map,然後計算完後再整合輸出,就是reduce。並且在記憶體中計算。簡單來說,就是乙個大的工程,你乙個人吃不下,需要多個人一起做,你來分配任務,分配不同的人去做事,這個就是現實版的RDD。

2樓:張帥

spark的RDD只是一種邏輯上的資料結構,便於資料的分割槽、容錯和pipline。RDD只是在流經它的資料做指定的function的操作,對資料進行加工,和工廠的流水線一樣,每個工人對流經他生產線的基礎產品進行指定的加工,最後產生最終產品

3樓:YFree

我理解的RDD 就是抽象出來的一條船船上裝著所有資料 (資料是分布儲存所以RDD是抽象出來的) 然後對RDD操作就是處理船上的資料整個spark應用就是在從乙個船轉換到另乙個船資料也在進行變換

4樓:Henry

rdd是spark的靈魂,中文翻譯彈性分布式資料集,乙個rdd代表乙個可以被分割槽的唯讀資料集。rdd內部可以有許多分割槽(partitions),每個分割槽又擁有大量的記錄(records)。

rdd的五個特徵:

dependencies:建立RDD的依賴關係,主要rdd之間是寬窄依賴的關係,具有窄依賴關係的rdd可以在同乙個stage中進行計算。

partition:乙個rdd會有若干個分割槽,分割槽的大小決定了對這個rdd計算的粒度,每個rdd的分割槽的計算都在乙個單獨的任務中進行。

preferedlocations:按照「移動資料不如移動計算」原則,在spark進行任務排程的時候,優先將任務分配到資料塊儲存的位置

compute:spark中的計算都是以分割槽為基本單位的,compute函式只是對迭代器進行復合,並不儲存單次計算的結果。

partitioner:只存在於(K,V)型別的rdd中,非(K,V)型別的partitioner的值就是None。

rdd的運算元主要分成2類,action和transformation。這裡的運算元概念,可以理解成就是對資料集的變換。action會觸發真正的作業提交,而transformation運算元是不會立即觸發作業提交的。

每乙個 transformation() 方法返回乙個新的RDD。只是某些transformation() 比較複雜,會包含多個子 transformation(),因而會生成多個 RDD。這就是實際 RDD 個數比我們想象的多一些的原因。

通常是,當遇到action運算元時會觸發乙個job的提交,然後反推回去看前面的transformation運算元,進而形成一張有向無環圖。在DAG中又進行stage的劃分,劃分的依據是依賴是否是shuffle的,每個stage又可以劃分成若干task。接下來的事情就是driver傳送task到executor,executor自己的執行緒池去執行這些task,完成之後將結果返回給driver。

action運算元是劃分不同job的依據。shuffle dependency是stage劃分的依據。

再說幾觀點:

spark程式中,我們用到的每乙個rdd,在丟失或者操作失敗後都是重建的。

rdd更多的是乙個邏輯概念,我們對於rdd的操作最終會對映到記憶體或者磁碟當中,也就是操作rdd通過對映就等同於操作記憶體或者磁碟。

在實際的生產環境中,rdd內部的分割槽數以及分割槽內部的記錄數可能遠比我們想象的多。

RDD 本身的依賴關係由 transformation() 生成的每乙個 RDD 本身語義決定。

每個 RDD 中的 compute() 呼叫 parentRDD.iter() 來將 parent RDDs 中的 records 乙個個拉取過來。

5樓:用心閣

看 與 Hadoop 對比,如何看待 Spark 技術? - 用心閣的回答 中的圖,已經說的很清楚了。

從MapReduce到Pig 再到Tez,這個過程對比Spark的RDD看也有幫助。

如果你熟悉函式式程式設計裡的Collection,也有幫助。

在Spark集群中,集群的節點個數 RDD分割槽個數 cpu核心個數三者與並行度的關係??

王燚光 梳理一下Spark中關於併發度涉及的幾個概念File,Block,Split,Task,Partition,RDD以及節點數 Executor數 core數目的關係。輸入可能以多個檔案的形式儲存在HDFS上,每個File都包含了很多塊,稱為Block。當Spark讀取這些檔案作為輸入時,會根...

怎麼更好地理解stata中RDD斷點回歸分析

連玉君 社會科學家主要對因果關係感興趣。這種關係在隨機試驗中很容易得到,但在社會科學中,隨機試驗會受到道德和實踐等諸多因素的限制。在缺少隨機試驗的前提下,我們往往訴諸於嚴格的準自然實驗干預。其中,RD 方法就是一種最為可信的因果推斷分析方法。在 RD 方法中,所有單位都擁有乙個 得分 並且得分值高於...

怎樣理解spark中的partition和block的關係?

初步探索之後發現partition的數量是與檔案數量,檔案大小,block設定額的大小有關 如下有 14個檔案,大小看左邊,此處的 hdfs block塊的大小設定為dfs.blocksize 134217728 252.9 M 758.8 M user hive warehouse tmp tab...