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;}
python lamada表达式
square = lambda x: x*x #定义函数 square(3) #调用函数
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框架计算实时视图来解决这个问题。