您好,登錄后才能下訂單哦!
Spark是近年來發(fā)展較快的分布式并行數(shù)據(jù)處理框架,了解和掌握spark對(duì)于學(xué)習(xí)大數(shù)據(jù)有著至關(guān)重要的意義。但是spark依賴于函數(shù)單元,它的函數(shù)編程過程是怎樣的呢?我們?cè)趺磥響?yīng)用呢?
一、Spark的函數(shù)式編程
Spark依賴于函數(shù)單元,函數(shù)是其編程的基本單元,只有輸入輸出,沒有state和side effect。它的關(guān)鍵概念就是把函數(shù)作為其他函數(shù)的輸入,不過在使用函數(shù)的過程中 使用的都是匿名函數(shù),因?yàn)檫@個(gè)函數(shù)只是滿足當(dāng)下計(jì)算,因此不需要固化下來進(jìn)行其它應(yīng)用。
把函數(shù)作為參數(shù)傳遞
很多RDD操作把函數(shù)作為參數(shù)傳遞,這里我們看一下RDD map操作偽代碼,把函數(shù)fn應(yīng)用到RDD的每條記錄。但這并不是它執(zhí)行的一個(gè)真正的代碼,只是通過這個(gè)代碼去看一下它處理的邏輯。
示例:傳遞命名的函數(shù)
匿名函數(shù)
匿名函數(shù)是沒有標(biāo)識(shí)符的嵌入式定義的函數(shù),最適合于臨時(shí)一次性的函數(shù)。在很多編程語言中支持,比如:
(1)Python:lambda x
(2)Scala:x =>
(3)Java 8:x ->
示例:傳遞匿名函數(shù)
(1)Python
(2)Scala
示例:Java
(1)Python
(2)Scala
Spark作為當(dāng)下大數(shù)據(jù)中重要的子目,必須深度掌握學(xué)習(xí)。但是大數(shù)據(jù)還在起步發(fā)展,并沒有形成完整成熟的理論系統(tǒng),需要我們多方位,多渠道的挖掘?qū)W習(xí)。這里推薦“大數(shù)據(jù)cn”微信公眾平臺(tái),里面介紹了很多大數(shù)據(jù)的相關(guān)知識(shí),很不錯(cuò)的!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。