spark textFile 困惑與解釋

2021-08-11 02:35:16 字數 686 閱讀 6804

在mapreduce框架中,shuffle是連線map和reduce之間的橋梁,map的輸出要用到reduce中必須經過shuffle這個環節,shuffle的效能高低直接影響了整個程式的效能和吞吐量。spark作為mapreduce框架的一種實現,自然也實現了shuffle的邏輯。

shuffle是mapreduce框架中的乙個特定的phase,介於map phase和reduce phase之間,當map的輸出結果要被reduce使用時,輸出結果需要按key雜湊,並且分發到每乙個reducer上去,這個過程就是shuffle。由於shuffle涉及到了磁碟的讀寫和網路的傳輸,因此shuffle效能的高低直接影響到了整個程式的執行效率。

下面這幅圖清晰地描述了mapreduce演算法的整個流程,其中shuffle phase是介於map phase和reduce phase之間。

概念上shuffle就是乙個溝通資料連線的橋梁,那麼實際上shuffle(partition)這一部分是如何實現的的呢,下面我們就以spark為例講一下shuffle在spark中的實現。

先以圖為例簡單描述一下spark中shuffle的整乙個流程:

m×rm×r,其中

mm是map的個數,

rr是reduce的個數。

這裡的bucket是乙個抽象概念,在實現中每個bucket可以對應乙個檔案,可以對應檔案的一部分或是其他等。

參考:

spark textFile讀取多個檔案

1.1 簡單讀取檔案 val spark sparksession.builder demo master local 3 getorcreate 讀取hdfs檔案目錄 spark.sparkcontext.textfile user data spark.sparkcontext.textfile...

矩陣的困惑

include stdafx.h include include include include pragma comment lib,cv.lib pragma comment lib,cvcam.lib pragma comment lib,cxcore.lib pragma comment l...

新手的困惑

作為一名學習c 的新手,在學習的過程中遇到了很多的困惑。第一是沒有合適的教材,買了一堆的教材,最後發現很多都沒用,都是些標題黨寫的,看著挺吸引人的,實際上不一定適合你 第二是有問題的時候不知道需要能問誰,描述問題不準確網上找答案也不一定有結果,這樣就需要學習者平時多總結。第三是沒有實踐的機會,只是看...