map和flatmap的區別
在正式介紹之前先看幾個典型的rdd編程的案例,很基本的那種

這是讀取的資料并輸出出來,這些是基本的rdd陳述句,特別要主義的是讀取本地檔案時要用///三個并且用引號引起來,不然會報錯,
先講一下map和flatmap是非常相似的,但是flatmap每個輸入的元素都會映射到0個或多個輸出結果上,但是map就沒有必要,
看一下具體的案例
map

flatmap

有個很形象的說法就是,flat是拍扁的意思,map只是把一行的單詞以特定的形式分開(具體根據.split()是什么)并把每一行存在一個串列里,flat是把每個串列都拍碎,把每個元素都得到,


這是原理圖,摘自廈門大學資料實驗室,
存盤
輸出文本檔案也相當簡單,saveAsTextFile(outputFile) 方法接收一個路徑,并將RDD 中的內容都輸入到路徑對應的檔案中,Spark 將傳入的路徑作為目錄對待,會在那個目錄下輸出多個檔案,這樣,Spark 就可以從多個節點上并行輸出了,在這個方法中,我們不能控制資料的哪一部分輸出到哪個檔案中,不過有些輸出格式支持控制,

將結果寫入result檔案中,repartition(1)的作用是讓結果合并到一個檔案中,不加的話會結果寫入到兩個檔案

執行結果如上圖,里面的執行結果類似于Hadoop的執行結果,千萬注意不要設定已經有的路徑作為輸出結果,這一點和Hadoop也一樣
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/433396.html
標籤:其他
