本文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. 学了Java 你未必知道这些

    作为一个正奔跑向编程完美天堂的朝圣者,本人觉得在平常的编程中,应该要做到以下几点: 一:汝应注释,这样做既方便别人,也方便自己去读懂代码的逻辑 二:注重细节,为自己写的每行代码负责,比如,在并发编程的 ...

  2. Android点滴---ViewHolder通用,优雅写法

    近期在做项目时,又要写 ViewHolder. 突然想到网上看看有没什么好的写法! 不知道你是不是也烦透了写那些没有技术含量的ViewHolder 看看这些.也许会有收获! 然后就找到了以下两篇文章( ...

  3. Html5 Device API详解

    三.四月曾学习过html5相关知识,并就html5 device api做过一次讲解 课程时长一个小时,预期达到level 200目标,即知道html5 device api是什么,且知道怎么实现 面 ...

  4. Add/Remove listview web part in publish site via powershell

    1. Here is the code: Add WebPart in Publish Site Example : AddWebPartPublish http://localhost  " ...

  5. C++ 建设者继承

    微通道公用号CodingRush 分享编程.算法.机器人leanring.数据挖掘.推荐系统.知识大数据计算框架,欢迎扫码关注. 子类继承了哪些东西? 子类在继承父类的时候,父类的public成员变量 ...

  6. wireshark教程

    Wireshark世界上最流行的网络分析工具. 这个强大的工具能够捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息.与非常多其它网络工具一样.Wireshark也使用pcap network ...

  7. [思考] hdu 4811 Ball

    意甲冠军: 有三种颜色的小珠,每种颜色的量R,Y,B 转球进入桌面成序,有多少种不同的颜色分别砍下的球在球门前+有多少身后球不同的颜色 问:最大的总比分值 思考: 球和后面的球先放好.剩下的就放中间了 ...

  8. 从最大似然到EM算法浅解

    从最大似然到EM算法浅解 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习十大算法之中的一个:EM算法.能评得上十大之中的一个,让人听起来认为挺NB的. ...

  9. 部署Win Server 2012十项注意

    博文来自 http://server.zol.com.cn/351/3511746.html Windows Server 2012是微软公司在2012年推出的面向中小企业应用一款全新的服务器操作系统 ...

  10. Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程

    一.前言: 这部分描述了Cocos2d-x 3.0的一些基础内容,以及在Eclipse上上编译我们的Cocos2d-x项目,成功把Helloworld执行起来了.看完本篇博客之后.你就会知道Cocos ...