Spark的函數式編程

Spark是近年來發展較快的分佈式並行數據處理框架,瞭解和掌握spark對於學習大數據有着至關重要的意義。但是spark依賴於函數單元,它的函數編程過程是怎樣的呢?我們怎麼來應用呢?

一、Spark的函數式編程

Spark依賴於函數單元,函數是其編程的基本單元,只有輸入輸出,沒有state和side effect。它的關鍵概念就是把函數作爲其他函數的輸入,不過在使用函數的過程中 使用的都是匿名函數,因爲這個函數只是滿足當下計算,因此不需要固化下來進行其它應用。

  • 把函數作爲參數傳遞

很多RDD操作把函數作爲參數傳遞,這裏我們看一下RDD map操作僞代碼,把函數fn應用到RDD的每條記錄。但這並不是它執行的一個真正的代碼,只是通過這個代碼去看一下它處理的邏輯。

wKiom1iAZgiiA132AABUin_qCHk320.png-wh_50

示例:傳遞命名的函數

wKiom1iAZhqztMPyAAEpGTxyBNc172.png-wh_50

  • 匿名函數

匿名函數是沒有標識符的嵌入式定義的函數,最適合於臨時一次性的函數。在很多編程語言中支持,比如:

(1)Python:lambda x

(2)Scala:x =>

(3)Java 8:x ->

示例:傳遞匿名函數

(1)Python

wKiom1iAZiiAHf7IAAAJwboQwf4470.png-wh_50

(2)Scala

wKiom1iAZjSgrd4CAAA6yh5E_sE817.png-wh_50

  • 示例:Java

(1)Python

wKiom1iAZkPgamqgAADNe6mXUI4035.png-wh_50

(2)Scala

wKiom1iAZlPCRK_nAAB593fGRkU584.png-wh_50

Spark作爲當下大數據中重要的子目,必須深度掌握學習。但是大數據還在起步發展,並沒有形成完整成熟的理論系統,需要我們多方位,多渠道的挖掘學習。這裏推薦“大數據cn”微信公衆平臺,裏面介紹了很多大數據的相關知識,很不錯的!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章