Lambda表達式 lambda expression是一個匿名函數,Lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。表達式使用 Lambda 運算符 =>,該運算符讀為“goes to”。語法如 ...
Lambda表達式
lambda expression是一個匿名函數,Lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。
表達式使用 Lambda 運算符 =>,該運算符讀為“goes to”。語法如下:
形參列表=>函數體
函數體多於一條語句的可用大括弧括起。
(x,y) => Console.Write("包含2個參數,值為:{0}和{1}",x,y)
(x,y)=>{int v=x*10;return y+v;}
lambda架構
Lambda架構劃分為三層,分別是批處理層,服務層,和加速層。
query = function(all data)
Lambda系統架構定義了一套明確的架構原則,如果要建立一套強大的和可擴展的數據系統,必須服從上面的公式。
Lambda基於下列原則:
1.人為容錯性human fault-tolerance – 系統易數據丟失或數據損壞,大規模時可能是不可輓回的。
2.數據不可變性data immutability – 數據存儲在它的最原始的形式不變的,永久的。
3.重新計算recomputation – 因為上面兩個原則,運行函數重新計算結果是可能的。
批處理層(Batch Layer)
批處理層主用由Hadoop來實現,負責數據的存儲和產生數據視圖。
服務層(Serving layer)
由於批處理視圖是靜態的,服務層僅僅需要提供批量地更新和隨機讀,通過創建Hive表,讀取HDFS中的數據。
加速層 (Speed layer)
在本質上,加速層與批處理層是一樣的,都是從它接受到的數據上計算而得到視圖。
加速層就是為了彌補批處理層的高延遲性問題,它通過Strom,Spark框架計算實時視圖來解決這個問題。