本文example6环境与前Hadoop 1.x异,于Hadoop 2.x环境测试。

功能与前面相同的日志处理程序。

第一newLISP文字,游玩mapper任务。于stdin读取文本数据,将did由于key, value至1,结果是随后被输出到stdout

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

最后应该能够在HDFS下看到结果。

用脚本编程的优点是方便測试,如今先开发newLISP脚本读入文件。并仿照map逻辑处理,然后交给兴许的newLISP脚本仿照reduce处理。

以下是map.lsp代码:

#!/usr/bin/newlisp

(while (read-line)
(set 'value (parse (current-line) ","))
(println (string (value 2) "\t1"))
) (exit)

測试一下:

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

结果还不错:

537025b84700aab27472b87f        1
537023124700aab27472b82a 1
537031a24700aab27472b982 1
537023c84700aab27472b841 1
537014e74700aab27472b48b 1
53702cac4700aab27472b928 1
537049cd4700aab27472ba91 1
5370dd0b4700aab27472bde4 1

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

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

以下来实现reduce.lsp代码:

(new Tree 'my-table)

(while (read-line)
(set 'line-value (parse (current-line) "\t"))
(set 'key (line-value 0))
(set 'value (int (line-value 1)))
(set 'v (my-table key))
(if v
(my-table key (+ v value))
(my-table key value)
)
) (dolist (item (my-table)) (println (item 0) "\t" (item 1))) (exit)

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

然后将map.lsp输出的数据每行依照\t拆分。获取key和value

存入my-table中,用key查询,有则value加1,无key则加入进去。

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

以下的命令能够将map和reduce脚本连起来測试:

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

版权声明:本文博主原创文章,博客,未经同意不得转载。

MapReduce 规划 系列的12 使用Hadoop Streaming技术集成newLISP文字的更多相关文章

  1. MapReduce 规划 系列十 采用HashPartitioner调整Reducer计算负荷

    example4它演示了如何指定Reducer号码,本节演示如何使用HashPartitioner将Mapper根据该输出key分组后Reducer为了应对. 合理的分组策略会尽一切Reducer不能 ...

  2. 大数据系列(2)——Hadoop集群坏境CentOS安装

    前言 前面我们主要分析了搭建Hadoop集群所需要准备的内容和一些提前规划好的项,本篇我们主要来分析如何安装CentOS操作系统,以及一些基础的设置,闲言少叙,我们进入本篇的正题. 技术准备 VMwa ...

  3. Hadoop Streaming框架学习2

    Hadoop Streaming框架学习(二) 1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop ...

  4. Hadoop Streaming框架学习(一)

    Hadoop Streaming框架学习(一) Hadoop Streaming框架学习(一) 2013-08-19 12:32 by ATP_, 473 阅读, 3 评论, 收藏, 编辑 1.Had ...

  5. Hadoop Streaming框架学习(二)

    1.常用Streaming命令介绍 使用下面的命令运行Streaming MapReduce程序: 1: $HADOOP_HOME/bin/hadoop/hadoop streaming args 其 ...

  6. 大数据系列(3)——Hadoop集群完全分布式坏境搭建

    前言 上一篇我们讲解了Hadoop单节点的安装,并且已经通过VMware安装了一台CentOS 6.8的Linux系统,咱们本篇的目标就是要配置一个真正的完全分布式的Hadoop集群,闲言少叙,进入本 ...

  7. hadoop streaming 多路输出 [转载]

    转载 http://www.cnblogs.com/shapherd/archive/2012/12/21/2827860.html hadoop 支持reduce多路输出的功能,一个reduce可以 ...

  8. Hadoop Streaming框架使用(一)

      Streaming简介 link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html Streaming框架允许任何程 ...

  9. Hadoop Streaming例子(python)

    以前总是用java写一些MapReduce程序现举一个例子使用Python通过Hadoop Streaming来实现Mapreduce. 任务描述: HDFS上有两个目录/a和/b,里面数据均有3列, ...

随机推荐

  1. 教你pomeloclient包libpomelo增加cocos2d-x 3.0工程(Windows、Android、IOS平台)

    Windows平台 操作系统:Windows7(64-bit) VS版本号:2013 Cocos2d-x版本号:3.0 project路径:E:\cocos2d-prj\ 1.从github下载lib ...

  2. Android-它们的定义Notification

    Android-它们的定义Notification 2014年4月26日  消息栏的消息,想必各位Android发烧友非常清楚知道是什么,比方我们下载了一个应用,它可能会定时推送些消息到我们的手机中. ...

  3. UVa 442 Matrix Chain Multiplication(矩阵链,模拟栈)

    意甲冠军  由于矩阵乘法计算链表达的数量,需要的计算  后的电流等于行的矩阵的矩阵的列数  他们乘足够的人才  非法输出error 输入是严格合法的  即使仅仅有两个相乘也会用括号括起来  并且括号中 ...

  4. hdu - 4975 - A simple Gaussian elimination problem.(最大流量)

    意甲冠军:要在N好M行和列以及列的数字矩阵和,每个元件的尺寸不超过9,询问是否有这样的矩阵,是独一无二的N(1 ≤ N ≤ 500) , M(1 ≤ M ≤ 500). 主题链接:http://acm ...

  5. leetcode先刷_Binary Tree Level Order Traversal II

    非常easy标题,在后面,我不认为它不是那么简单的回答更多的.我们将编写,没有人啊. 预购在基层上,加上节省每一层,加上从下往上的输出,是一家vector而一个stack那么问题,没有他,但另一方面- ...

  6. oracle迁移mysql数据库注意(转)

    oracle转mysql修改: 1. substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_c ...

  7. android studio下gradle与Git错误解决方法

    Error: Gradle: Execution failed for task ':mytask' > A problem occurred starting process 'command ...

  8. Hadoop学习笔记(两)设置单节点集群

    本文描写叙述怎样设置一个单一节点的 Hadoop 安装.以便您能够高速运行简单的操作,使用 Hadoop MapReduce 和 Hadoop 分布式文件系统 (HDFS). 參考官方文档:Hadoo ...

  9. Echache整合Spring缓存实例讲解(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要介绍了EhCache,并通过整合Spring给出了一个使用实例. 一.EhCac ...

  10. 【翻译mos文章】Linux x86 and x86-64 系统SHMMAX最大

    Linux x86 and x86-64 系统SHMMAX最大值 参考原始: Maximum SHMMAX values for Linux x86 and x86-64 (文件 ID 567506. ...