Hadoop的改进实验(中文分词词频统计及英文词频统计)(4/4)
声明:
1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究。
2)本小实验工作环境为Windows系统下的百度云(联网),和Ubuntu系统的hadoop1-2-1(自己提前配好)。如不清楚配置可看《Hadoop之词频统计小实验初步配置》
3)本文由于过长,无法一次性上传。其相邻相关的博文,可参见《Hadoop的改进实验(中文分词词频统计及英文词频统计) 博文目录结构》,以阅览其余三篇剩余内容文档。
(五)单机伪分布的英文词频统计Python&Streaming
Python与Streaming背景
- Python与Streaming
背景:Python程序也可以运用至hadoop中,但不可以使用MapReduce框架,只可以使用Streaming模式借口,该接口专为非java语言提供接口,如C,shell脚本等。
1)单机本机
Hadoop 0.21.0之前的版本中的Hadoop Streaming工具只支持文本格式的数据,而从Hadoop 0.21.0开始,也支持二进制格式的数据。hadoop streaming调用非java程序的格式接口为:
Usage: $HADOOP_HOME/bin/hadoop jar \
$HADOOP_HOME/contrib/streaming/hadoop-*-streaming.jar [options]
其Options选项大致为:
(1)-input:输入文件路径
(2)-output:输出文件路径
(3)-mapper:用户自己写的mapper程序,可以是可执行文件或者脚本
(4)-reducer:用户自己写的reducer程序,可以是可执行文件或者脚本
(5)-file:打包文件到提交的作业中,可以是mapper或者reducer要用的输入文件,如配置文件,字典等。
(6)-partitioner:用户自定义的partitioner程序
(7)-combiner:用户自定义的combiner程序(必须用java实现)
(8)-D:作业的一些属性(以前用的是-jonconf)
举个例子,具体可以是:
$HADOOP_HOME/bin/hadoop jar \
contrib/streaming/hadoop-0.20.2-streaming.jar \
-input input \
-ouput output \
-mapper mapper.py \
-reducer reducer.py \
-file mapper.py \
-file reducer.py \
2)百度开放云
百度开放云很是方便,方便在于提供好了streaming的模式接口,如果需要本机提供此接口,需要将调用hadoop里的streaming.jar包,其次格式非常麻烦,有时总会不成功。不如百度开放云使用方便,当然了物有两面,百度开放云对于中文处理,显示总是乱码,故处理中文类,还是需要单机下的hadoop平台。
当然了,和单机下一样,至少你要写好两个python脚本,一个负责mapper,一个负责reducer,然后接下来后续步骤。
百度开放云提供的接口是:
hadoop jar $hadoop_streaming –input Input –output Output –mapper "python mapper.py" –reducer "python reducer.py" –file mapper.py –file reducer.py
只要环境做好,非常好用,直接成功。
Python英文词频统计实验
- 实验过程
背景:Python程序也可以运用至hadoop中,但不可以使用MapReduce框架,只可以使用Streaming模式借口,该接口专为非java语言提供接口,如C,shell脚本等。
下面的步骤均是在百度开放云上进行操作的,如需在本机上操作,原理是一样的,命令也基本相同的。
1)准备数据
先打算处理简单文本,因此上传了三个简单的英文单词文本。如下图所示,我们可以看到文本里的内容。
然后,我们要开始准备python脚本,下表可看两个脚本的内容。
# Mapper.py #!/usr/bin/env python import sys # maps words to their counts word2count = {} # input comes from STDIN (standard input) for line in sys.stdin: # remove leading and trailing whitespace line = line.strip() # split the line into words while removing any empty strings words = filter(lambda word: word, line.split()) # increase counters for word in words: # write the results to STDOUT (standard output); # what we output here will be the input for the # Reduce step, i.e. the input for reducer.py # # tab-delimited; the trivial word count is 1 print '%s\t%s' % (word, 1) |
# Reducer.py #!/usr/bin/env python from operator import itemgetter import sys # maps words to their counts word2count = {} # input comes from STDIN for line in sys.stdin: # remove leading and trailing whitespace line = line.strip() # parse the input we got from mapper.py word, count = line.split() # convert count (currently a string) to int try: count = int(count) word2count[word] = word2count.get(word, 0) + count except ValueError: # count was not a number, so silently # ignore/discard this line pass # sort the words lexigraphically; # this step is NOT required, we just do it so that our # final output will look more like the official Hadoop # word count examples sorted_word2count = sorted(word2count.items(), key=itemgetter(0)) # write the results to STDOUT (standard output) for word, count in sorted_word2count: print '%s\t%s'% (word, count) |
接着,上传两个脚本,并执行指令:
hadoop jar $hadoop_streaming -input Input -output Output -mapper "python mapper.py" -reducer "python reducer.py" -file mapper.py -file reducer.py
工作状态的示意图如下图所示:
最后出现结果,结果如图所示。
至此,streaming模式的英文词频统计实验结束。
<<<<<<<<< 写在页面最底的小额打赏 >>>>>>>>>
如果读者亲愿意的话,可以小额打赏我,感谢您的打赏。您的打赏是我的动力,非常感激。
必读:如您愿意打赏,打赏方式任选其一,本页面右侧的公告栏有支付宝方式打赏,微信方式打赏。
避免因打赏产生法律问题,两种打赏方式的任一打赏金额上限均为5元,谢谢您的支持。
如有问题,请24小时内通知本人邮件。
转载于:https://www.cnblogs.com/bitpeach/p/3756172.html
Hadoop的改进实验(中文分词词频统计及英文词频统计)(4/4)相关推荐
- Hadoop的改进实验(中文分词词频统计及英文词频统计)(1/4)
声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的百度云(联网),和Ubuntu系统的hadoop1-2-1(自己提前配好).如不 ...
- Hadoop的改进实验(中文分词词频统计及英文词频统计)(2/4)
声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的百度云(联网),和Ubuntu系统的hadoop1-2-1(自己提前配好).如不 ...
- 文本挖掘(超详细:数据获取 - 数据清洗 - 中文分词 - 去除停用词 - 词频统计 - 词云图 - 情感分析)
文本挖掘(超详细) 朋友们好,文本挖掘这篇文章写了也有一段时间了,承蒙朋友们的厚爱,作者后面有做过一个升级版的文本挖掘,但苦于没有时间一直没有更新,现在在抽时间把后面写的这个也发布出来,两篇文章的步骤 ...
- ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)(转)
本文地址,需转载请注明出处: http://blog.csdn.net/hereiskxm/article/details/47441911 当我们使用中文分词器的时候,其实也希望它能够支持对于英文的 ...
- ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)
本文地址,需转载请注明出处: http://blog.csdn.net/hereiskxm/article/details/47441911 当我们使用中文分词器的时候,其实也希望它能够支持对于英文的 ...
- 计算机毕设——中文分词方法研究与实现
毕业论文 中文分词方法研究与实现 1.课题意义及目标 中文分词技术不断发展,各种中文分词系统层出不穷.中文分词技术应用也原来越广泛.如搜索引擎的应用.语音识别系统.机器翻译.自动分类校对等.学生应通过 ...
- 基于字典的中文分词算法RMM
引言:目前针对中文分词一般有基于字典,基于统计(HMM等),基于规则的分词方法,然而其中基于字典的中文分词是最基础,同时也是最高效的方式,但分词精度取决与字典的规模. 一.基于字典的中文算法简介 1. ...
- 基于字典的中文分词算法RMM,MM实现
引言:目前针对中文分词一般有基于字典,基于统计(HMM等),基于规则的分词方法,然而其中基于字典的中文分词是最基础,同时也是最高效的方式,但分词精度取决与字典的规模. 一.基于字典的中文算法简介 1. ...
- 中文分词——知更鸟分词(RS)设计与实现
内容提要 1 分词概述 2 算法分类 2.1 字符匹配 2.2 理解法 2.3 统计法 3 常见项目 4 知更鸟分词实现 4.1 算法描述 4.2 数据结构 4.3 部分代码 4.4 运行结果 5 对 ...
最新文章
- AirPods Pro真香,送一款!
- MATLAB一些图的绘制,MATLAB的使用
- nginx(一)安装与命令总结
- 机器学习实战3--豆瓣读书简介
- Pig 0.12.1安装和使用
- AliExpress智能营销引擎大揭秘-AnalyticDB如何做到快准狠省
- TensorRT:AttributeError: 'module' object has no attribute 'Logger'
- 什么是WEBService,实现WEBService有哪些框架
- 百面机器学习--机器学习面试问题系列(三)经典算法
- 拼多多商品详情百亿补贴数据采集接口代码展示
- LOL英雄联盟打不了文字,打字就一闪一闪的,英文可以,解决方式
- qt项目转Xcode项目(Xcode开发qt)
- Spark列级血缘(字段级别血缘)开发与实现
- 2021年科创板股权激励研究报告发布
- Apache NIFI
- 线性规划与单纯形法(线性规划、单纯形法、单纯形表、人工变量法)
- 外媒曝光:小米新奇想专利让超广角拍摄不失真
- 煤矿矿长相当于什么级别?
- My97日期插件实现日期多选
- 中南大学python程序设计_关于公布2017年中南大学精品教材.PDF
热门文章
- roaringbitmap java,roaringbitmap 源码解析 bitmap add过程
- java see 方法_Java 反射常用方法
- * 完成随机点名案例;学生姓名都提前写在文件中;:每次敲回车,随机显示一个学生姓名,每人最多显示一次,所有人都显示完了就结束程序;
- Arraylist添加5个学生对象,按成绩降序, 删除前三之后的学生
- 苏州大学实验报告模板C语言,苏州大学实验报告-实验flash在线编程实验
- vb连接mysql未发现_vb连接MySQL遇到的问题解决方法
- 快速幂实现pow函数(从二分和二进制两种角度理解快速幂)
- 图【数据结构F笔记】
- C++(STL):34--- multiset容器详解
- python 方法的实例_python调用自定义函数的实例操作