掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
由于計算的融合只發(fā)生在 Stages 內(nèi)部,而 Shuffle 是切割 Stages 的邊界,因此一旦發(fā)生 Shuffle,內(nèi)存計算的代碼融合就會中斷。

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設計、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設公司與策劃設計,代縣網(wǎng)站建設哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設十多年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:代縣等地區(qū)。代縣做網(wǎng)站價格咨詢:18980820575
在 Spark 中,內(nèi)存計算有兩層含義:
第一層含義就是眾所周知的分布式數(shù)據(jù)緩存;
第二層含義是 Stage 內(nèi)的流水線式計算模式,通過計算的融合來大幅提升數(shù)據(jù)在內(nèi)存中的轉換效率,進而從整體上提升應用的執(zhí)行性能;
那 Stage 內(nèi)的流水線式計算模式到底長啥樣呢?在 Spark 中,流水線計算模式指的是:在同一 Stage 內(nèi)部,所有算子融合為一個函數(shù),Stage 的輸出結果,由這個函數(shù)一次性作用在輸入數(shù)據(jù)集而產(chǎn)生。
我們用一張圖來直觀地解釋這一計算模式。
在上面的計算流程中,如果你把流水線看作是內(nèi)存,每一步操作過后都會生成臨時數(shù)據(jù),如圖中的 clean 和 slice,這些臨時數(shù)據(jù)都會緩存在內(nèi)存里。
但在下面的內(nèi)存計算中,所有操作步驟如 clean、slice、bake,都會被捏合在一起構成一個函數(shù)。這個函數(shù)一次性地作用在“帶泥土豆”上,直接生成“即食薯片”,在內(nèi)存中不產(chǎn)生任何中間數(shù)據(jù)形態(tài)。
由于計算的融合只發(fā)生在 Stages 內(nèi)部,而 Shuffle 是切割 Stages 的邊界,因此一旦發(fā)生 Shuffle,內(nèi)存計算的代碼融合就會中斷。但是,當我們對內(nèi)存計算有了多方位理解以后,就不會一股腦地只想到用 cache 去提升應用的執(zhí)行性能,而是會更主動地想辦法盡量避免 Shuffle,讓應用代碼中盡可能多的部分融合為一個函數(shù),從而提升計算效率。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流