在Hadoop上用集算器进行敏捷语法编程-续.pdf

在Hadoop上用集算器进行敏捷语法编程-续.pdf

ID:52238927

大小:344.93 KB

页数:2页

时间:2020-03-25

在Hadoop上用集算器进行敏捷语法编程-续.pdf_第1页
在Hadoop上用集算器进行敏捷语法编程-续.pdf_第2页
资源描述:

《在Hadoop上用集算器进行敏捷语法编程-续.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在Hadoop上用集算器进行敏捷语法编程-续上次分享了用集算器的敏捷语法来编写Hadoop代码的一些经验。本文是对上次的补充和深入。首先说网格代码。上次讲了网格代码可以方便地定义变量、引用变量、进行多步的复杂计算。实际上,网格还可以使计算结果的复用变得简单,请看下面这段代码:可以看到A2的计算结果在B2和A3中被复用了。网格中的格线也是个不错的主意。它可以使代码自然对齐,比如通过缩进形成直观的作用范围。比如下面这段代码:BranchoneBranchtwo看上去不错,判断语句的分支很好识别。不必刻意编辑就可以使代码清晰工整。再说一下对象引用

2、。什么是对象引用?上次代码中有这一段:A10:=A9.sort(sumAmount:-1).select(#<=10),A10的代码其实可以分写在两个单元格中,一个进行排序,另一个进行过滤。但在实际的代码中我是用“.”来连接这两步运算的,这就是对象引用。它可以显著减少代码的书写量,使代码编写更加敏捷。SQL直写大数据计算常会访问Hive数据库或传统数据库,MapReduce需要书写麻烦的connectstatementresult语句,而集算器支持SQL直写,省去了这些麻烦。例如,从数据源名为HData的Hive数据库取得销售记录,在集

3、算器中只需一句:$(HData)select*fromsales。函数选项首先看上次代码中的这两句:节点机代码A2:=A1.groups(${gruopField};${method}(${sumField}):Amount)汇总机代码A9:=A8.groups@o(${gruopField};${method}(Amount):sumAmount)前者直接使用groups,以便对未排序的数据进行分组。后者使用了@o选项,表示对已排序的数据进行分组,这样速度更快。@o就是个函数选项,它可以减少复杂的重载函数,使不同功能的函数更容易记忆。

4、除了@o,groups还有@m和@n等函数选项。函数选项是个不错的设计,可以是使函数结构更加简单,代码编写更加敏捷。多层参数多层参数(或叫层次参数)也可以使语法更加敏捷,这是表示函数中不同层级参数的一种方式,比如给员工按绩效分数划分级别:绩效大于90,定为“A”绩效在90到60之间,定为“B”绩效在60到30之间,定为“C”绩效在30以下,定为“D”在集算器中,上述参数可以敏捷地表达为:score>90:"A",score>60&&score<90:"B",score>30&&score<=60:"C";"D"这里的参数分为三层,最

5、外层:分支和缺省分支,用“;”来分隔;中间层:每个分支用“,”来分隔;最内层:每个分支中的判断表达式和判断结果用“:”来分隔。这是个三层树形结构的参数组合。集合式分组集算器支持集合式分组,同样可以敏捷地编写代码。动态数据类型本质是集合,即简单数据类型是单值集合,数组是同类数据的集合,二维表是记录的集合。集合的成员也可以是另一个集合,因此集算器可以直观地表示数据计算中分组的概念:每一组是集合的一个成员,成员本身也是一个集合。集合式分组可以用敏捷的语法解决复杂的分组计算问题。比如找出签订保单数最多和最少的销售员,代码如下:A1格:按销售员分组。

6、每组是一个销售员全部的保单集合。A2格:把组按保单数量排序。这里的”~”即每个销售员对应的那一组保单。A3格:求最多和最少的保单在哪两个组。即A2格中第一位和倒数第一位的组。A4格:列出销售员名。即A3中两组保单对应的销售员。集算器的敏捷语法使代码开发更加高效,可以显著减少开发工作量。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。