文档章节

用Hadoop Streaming技术集成newLISP脚本

超人学院
 超人学院
发布于 2014/11/24 14:40
字数 655
阅读 18
收藏 0

本文example6环境和之前的Hadoop 1.x不同,是在Hadoop 2.x环境下测试。功能和前面的日志处理程序一样。

第一个newLISP脚本,起到mapper的作用,在stdin中读取文本数据,将did作为key, value1,然后将结果输出到stdout

第二个newLISP脚本,起到reducer的作用,在stdin中读取<key, values>, keydic values是所有的value,简单对value求和后,写到stdout

最后应该可以在HDFS下看到结果。

 

用脚本编程的好处是方便测试,现在先开发newLISP脚本读入文件,并仿照map逻辑处理,然后交给后续的newLISP脚本仿照reduce处理。

下面是map.lsp代码:

[plain] view plaincopyprint?

1.  #!/usr/bin/newlisp  

2.    

3.  (while (read-line)  

4.    (set 'value (parse (current-line) ","))  

5.    (println (string (value 2) "\t1"))  

6.  )  

7.    

8.  (exit)  


测试一下:

[plain] view plaincopyprint?

1.  cat logs/sign_2014-05-10.0.csv | ./map.lsp  


结果还不错:

[plain] view plaincopyprint?

1.  537025b84700aab27472b87f        1  

2.  537023124700aab27472b82a        1  

3.  537031a24700aab27472b982        1  

4.  537023c84700aab27472b841        1  

5.  537014e74700aab27472b48b        1  

6.  53702cac4700aab27472b928        1  

7.  537049cd4700aab27472ba91        1  

8.  5370dd0b4700aab27472bde4        1  


将一行记录按照,拆开,放在一个list中,然后取第三个元素,也就是设备ID,之后添加\t为列分隔符号,然后再添加1.

这样就转成了did\t1\n的形式的<key,value>reduce。注意newLISP的代码println函数会自动在字符串后面添加\n.

 

下面来实现reduce.lsp代码:

[plain] view plaincopyprint?

1.  (new Tree 'my-table)  

2.    

3.  (while (read-line)  

4.    (set 'line-value (parse (current-line) "\t"))  

5.    (set 'key (line-value 0))  

6.    (set 'value (int (line-value 1)))  

7.    (set 'v (my-table key))  

8.    (if v  

9.        (my-table key (+ v value))  

10.     (my-table key value)  

11.       )  

12. )  

13.   

14. (dolist (item (my-table)) (println (item 0) "\t" (item 1)))  

15.   

16. (exit)  


首先创建了一个my-table,用来保存<key,value>

然后将map.lsp输出的数据每行按照\t拆分,获取keyvalue

存入my-table中,用key查询,有则value1,key则添加进去。

最后遍历整个my-table,输出did\tsum\n这样的数据。

 

下面的命令可以将mapreduce脚本连起来测试:

[plain] view plaincopyprint?

1.  cat logs/sign_2014-05-10.0.csv | ./map.lsp | sort | ./reduce.lsp  

 

hadoop集群部署的时候首先要确保newlisp二进制程序都部署在所有节点的/usr/bin/目录下,并且有执行权限。由于newlisp程序本身非常小,所以部署及其轻松,直接scp即可。

然后执行hadoop命令:

hadoop jar hadoop-streaming-1.0.0.jar -files map.lsp reduce.lsp -input /user/chenshu/share/logs -output /user/chenshu/share/output/lisp -mapper map.lsp -reducer reduce.lsp 

 

© 著作权归作者所有

超人学院
粉丝 115
博文 335
码字总数 388917
作品 0
昌平
CTO(技术副总裁)
私信 提问
newLISP你也行 --- newLISP简介

############################################################################# # Name:newLISP你也行 --- newLISP简介 # Author:黄登(winger) # Gtalk:free.winger@gmail.com # Gtalk-Gr......

天国之翼
2012/05/31
1.4K
0
newLISP 10.7.4 发布,易学易用版类 LISP 语言

newLISP 10.7.4 发布了,此版本与 10.7.x 系列兼容。newLISP 是一个友好的、快速且轻量的类似 Lisp 的脚本语言。它具有 LISP 语言的所有功能,但更容易学习和使用。 此次新增特性包括: 当存...

h4cd
2018/09/16
818
2
newLISP 10.4.3 发布!修正2个严重Bug!

newLISP 10.4.3 发布了,修复了文件操作 seek 和 close 的严重的问题 下载地址: http://www.newlisp.org/downloads/newLISP-10.4.3-Release.html newLISP是一个类似Lisp语言的、用于一般用途...

wendal
2012/05/08
698
5
newLISP 是如何令我惊愕忘形的

译者:skydark 偶然看到这篇文章, 感到非常有意思,忍不住想翻译一下。 原文标题是“How newLISP Took My Breath (And Syntax) Away”,非常漂亮的一个标题,但是不知道怎么翻译好,就随便编...

天国之翼
2012/07/25
7.7K
7
脚本语言 newLISP 10.6.1 开发版发布了!

newLISP 10.6.1 开发版发布了,此版本现已提供下载,主要就是 Bug 修复,同时还添加几个小方法,兼容 newLISP 10.6.0 版本。 新功能和改进 A new function (collect exp) reapeatedly evalu...

wendal
2014/09/17
2.2K
6

没有更多内容

加载失败,请刷新页面

加载更多

MBTI助你成功,让你更了解你自己

MBTI助你成功,让你更了解你自己 生活总是一个七日接着又一个七日,相信看过第七日的小伙伴,很熟悉这段开场白,人生是一个测试接着又一个测试,上学的时候测试,是为了证明你的智力,可谓从...

蛤蟆丸子
今天
55
0
Android实现App版本自动更新

现在很多的App中都会有一个检查版本的功能。例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求。一般的处理方式是:服务器返回的App版本与当前手机安...

shzwork
昨天
72
0
npm 发布webpack插件 webpack-html-cdn-plugin

初始化一个项目 npm init 切换到npm源 淘宝 npm config set registry https://registry.npm.taobao.org npm npm config set registry http://registry.npmjs.org 登录 npm login 登录状态......

阿豪boy
昨天
87
0
java基础(16)递归

一.说明 递归:方法内调用自己 public static void run1(){ //递归 run1(); } 二.入门: 三.执行流程: 四.无限循环:经常用 无限递归不要轻易使用,无限递归的终点是:栈内存溢出错误 五.递...

煌sir
昨天
63
0
REST接口设计规范总结

URI格式规范 URI中尽量使用连字符”-“代替下划线”_”的使用 URI中统一使用小写字母 URI中不要包含文件(脚本)的扩展名 URI命名规范 文档(Document)类型的资源用名词(短语)单数命名 集合(Co...

Treize
昨天
69
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部