“λ”就像一个人双手插兜独自行走,感到“无奈、无助、孤独”。λ读作Lambda,在物理学中是波长符号,在放射学中是衰减常数,在线性代数中是特征值……在程序和代码的世界里,它代表函数表达式、系统架构和云计算架构。代码中的LambdaLambda表达式是根据数学中的λ演算命名的。可以看做是匿名函数,可以代替表达式、函数、闭包等,还支持类型推断,可以远离匿名内部类。为什么要使用Lambda?1)代码更紧凑2)在函数式编程中具有修改方法的能力3)有利于多核计算Lambda的目的是让程序员能够抽象出程序行为,把代码行为当作数据。JavaJava8的一大亮点是引入了Lambda表达式。编写Lambda表达式时,它们也会被编译成函数式接口。一个典型的例子是文件类型过滤:Filedir=newFile("/an/dir/");FileFilterdirectoryFilter=newFileFilter(){publicbooleanaccept(Filefile){returnfile.isDirectory();}};用lambda重写后:Filedir=newFile("/an/dir/");File[]dirdirs=dir.listFiles((Filef)->f.isDirectory());Lambda表达式本身没有类型,因为常规类型系统没有“Lambda表达式”这个内部概念。Python不同于Java语言。Python的Lambda表达式的函数体只能有一条语句,就是返回值表达式语句。Python编程语言使用lambda来创建匿名函数。一个典型的例子是求列表中所有元素的平方。一般写法defsq(x):returnx*xmap(sq,[yforyinrange(108)])使用lambda写法map(lambdax:x*x,[yforyinrange(108)])在spark中,使用Python操作时RDD、Lambda随处可见。out_rdd=in_rdd.filter(#filtertheemptyrecordlambdax:x[1]isnotNoneandx[1]!={}).map(lambdax:utils.parse_data(x[1],es_relations)).filter(#filtertheemptyrecordlambdax:xisnotNone).filter(#filtertherecordlambdax:x[u'timestamp']>time_start)LambdaLambda架构在大数据架构中的目标是设计一个能够满足实时大数据系统关键特性的架构,包括:高容错、低延迟和可扩展性。Lambda架构融合了离线计算和实时计算,融合了Immunability、读写分离、复杂性隔离等一系列架构原则。可以集成Hadoop、Kafka、Storm、Spark、Hbase等各种大数据组件。BatchLayer预计算的作用其实就是把大数据变小,从而有效利用资源,提高实时查询的性能。主要功能有:存储MasterDataset,这是一个不变的、不断增长的数据集。ServingLayer负责批量视图的操作,为最终的实时查询提供支持。主要功能有:随机访问batchviewUpdatebatchviewspeedlayer和batchlayer非常相似,它们最大的区别是前者只处理最新的数据,而后者处理所有数据。另一个区别是,为了满足最小延迟,速度层不会同时读取所有新数据。当接收到新数据时,它会更新实时视图,而不是像批处理层那样重新计算整个视图。速度层是增量计算,而不是重新计算。SpeedLayer的作用包括:对更新到服务层造成的高延迟的补充快速、增量的算法最后,BatchLayer将覆盖速度层大数据系统一般具有以下特性:*健壮性和容错性(RobustnessandFaultTolerance)*LowLatencyreadsandupdates*Scalability*Generalization*Extensibility*Adhocqueries*Minimalmaintenancemaintenance)*Debuggability(可调试性)个人认为sparkstreaming,spark本身就是Lambda架构。云计算中的Lambda云计算中的Lambda是指无服务器架构,无需配置或管理服务器即可运行代码。借助Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,而无需管理。以AWS为例,Lambda在云计算中的流程示意图如下:只需上传代码,Lambda会处理运行和扩展高可用代码所需的所有工作。代码也可以设置为自动从其他服务触发,或者直接从任何网络或移动应用程序调用。ETL是数据挖掘和数据分析中必不可少的环节,通过AWSLambda可以轻松实现。示例如下:其实在spark上实现Lambda云服务并不太费力。总之,你知道的越多,你就会越喜欢它,神奇而有趣的Lambda。【本文来自专栏作家老曹的原创文章,作者微信公众号:哦家ArchiSelf,id:wrieless-com】
