Spark迭代運算

2021-10-18 04:09:53 字數 849 閱讀 1901

spark迭代運算,採用記憶體儲存中間計算結果,減少了迭代運算的磁碟io,並通過平行計算dag圖的優化,減少不同任務之間的依賴,降低延遲等待時間。

要搞懂spark迭代運算,著重去搞清楚幾個概念:rdd、dag(有向無環圖)、shuffle機制。

rdd是spark的靈魂,乙個rdd代表乙個可以被分割槽的唯讀資料集。rdd內部可以有許多分割槽(partitions),每個分割槽又擁有大量的記錄(records)。在spark執行運算任務時,rdd之間的依賴關係是靠有向無環圖(dag)表達的。

shuffle就是對資料進行重組,在hadoop mapreduce和spark當中,計算任務都是被劃分為兩個階段來執行的(map和reduce),shuffle是連線map和reduce之間的橋梁。map階段通過shuffle讀取資料並輸出到對應的reduce;而reduce階段負責從map端拉取資料並進行計算。

在spark當中,shuffle的過程一般分為兩個部分:shuffle write和shuffle fetch,前者是map任務劃分分割槽,輸出中間結果,而後者則是reduce任務獲取到的這些中間結果,所謂「使用上乙個計算結果),就是在這個階段。

針對持久化,rdd也有持久化快取機制。rdd 持久化是乙個分布式的過程,其內部的每個 partition 各自快取到所在的計算節點上。

spark 提供了 persist 和 cache 兩個持久化函式,其中 cache 將 rdd 持久化到記憶體中,而 persist 則支援多種儲存級別,包括memory_only、memory_and_disk、memory_only_ser、memory_and_dsk_ser、disk_only、memory_only_2、memory_and_disk_2等,各個指令代表的具體含義,這裡就不細說了。

vector迭代器的算數運算 初級

vectorintvector vector iterator end intvector.end vector iterator begin intvector.begin vector size type size intvector.size vector difference type di...

C 9 2迭代器支援的運算和迭代器範圍

每種容器型別都提供若干共同工作的迭代器型別,與容器型別一樣,所有迭代器具有相同的介面 如果某種迭代器支援某種操作,那麼支援這種操作的其他迭代器會以相同的方式支援這種操作。例如 所有容器迭代器都支援以解引用運算從容器中讀入乙個元素。類似的,容器都提供自增和自減操作符來支援從乙個元素到下乙個元素的訪問。...

快速冪運算 原理以其應用(遞迴 迭代)

快速冪演算法 1,背景 給定三個整數a b m a 10 9,b 10 6,1 m 10 9 求a b m typedef long long ll ll pow ll a,ll b,ll m return ans 給定三個整數a b m a 10 9,b 10 18,1 m 10 9 求a b m...