ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:257.61KB ,
资源ID:8246308      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8246308.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Hadoop那些事儿四MapReduce编程实例基础汇总.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Hadoop那些事儿四MapReduce编程实例基础汇总.docx

1、Hadoop那些事儿四MapReduce编程实例基础汇总Hadoop那些事儿(四)-MapReduce编程实例(基础)1.数据检索问题描述假设有很多条数据,我们从中查找包含某个字符串的语句。解决方案这个问题比较简单,首先在Map中获取当前读取的文件的文件名作为key,将要解析的数据按句号分割,逐句判断,如果包含指定的字符串则作为value输出。在Reduce中对属于同一文件的语句进行合并,然后输出。测试数据输入: in1.txt:浔阳江头夜送客,枫叶荻花秋瑟瑟。主人下马客在船,举酒欲饮无管弦。醉不成欢惨将别,别时茫茫江浸月。忽闻水上琵琶声,主人忘归客不发。寻声暗问弹者谁?琵琶声停欲语迟。移船相

2、近邀相见,添酒回灯重开宴。千呼万唤始出来,犹抱琵琶半遮面。转轴拨弦三两声,未成曲调先有情。弦弦掩抑声声思,似诉平生不得志。低眉信手续续弹,说尽心中无限事。轻拢慢捻抹复挑,初为霓裳后六幺。大弦嘈嘈如急雨,小弦切切如私语。嘈嘈切切错杂弹,大珠小珠落玉盘。间关莺语花底滑,幽咽泉流冰下难。冰泉冷涩弦凝绝,凝绝不通声暂歇。别有幽愁暗恨生,此时无声胜有声。银瓶乍破水浆迸,铁骑突出刀枪鸣。曲终收拨当心画,四弦一声如裂帛。东船西舫悄无言,唯见江心秋月白。沉吟放拨插弦中,整顿衣裳起敛容。自言本是京城女,家在虾蟆陵下住。十三学得琵琶成,名属教坊第一部。曲罢曾教善才服,妆成每被秋娘妒。五陵年少争缠头,一曲红绡不知数

3、。钿头银篦击节碎,血色罗裙翻酒污。今年欢笑复明年,秋月春风等闲度。弟走从军阿姨死,暮去朝来颜色故。门前冷落鞍马稀,老大嫁作商人妇。商人重利轻别离,前月浮梁买茶去。去来江口守空船,绕船月明江水寒。夜深忽梦少年事,梦啼妆泪红阑干。我闻琵琶已叹息,又闻此语重唧唧。同是天涯沦落人,相逢何必曾相识!我从去年辞帝京,谪居卧病浔阳城。浔阳地僻无音乐,终岁不闻丝竹声。住近湓江地低湿,黄芦苦竹绕宅生。其间旦暮闻何物?杜鹃啼血猿哀鸣。春江花朝秋月夜,往往取酒还独倾。岂无山歌与村笛?呕哑嘲哳难为听。今夜闻君琵琶语,如听仙乐耳暂明。莫辞更坐弹一曲,为君翻作琵琶行。感我此言良久立,却坐促弦弦转急。凄凄不似向前声,满座重

4、闻皆掩泣。座中泣下谁最多?江州司马青衫湿。in2.txt:汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。回眸一笑百媚生,六宫粉黛无颜色。春寒赐浴华清池,温泉水滑洗凝脂。侍儿扶起娇无力,始是新承恩泽时。云鬓花颜金步摇,芙蓉帐暖度春宵。春宵苦短日高起,从此君王不早朝。承欢侍宴无闲暇,春从春游夜专夜。后宫佳丽三千人,三千宠爱在一身。金屋妆成娇侍夜,玉楼宴罢醉和春。姊妹弟兄皆列土,可怜光彩生门户。遂令天下父母心,不重生男重生女。骊宫高处入青云,仙乐风飘处处闻。缓歌谩舞凝丝竹,尽日君王看不足。渔阳鼙鼓动地来,惊破霓裳羽衣曲。九重城阙烟尘生,千乘万骑西南行

5、。翠华摇摇行复止,西出都门百余里。六军不发无奈何,宛转蛾眉马前死。花钿委地无人收,翠翘金雀玉搔头。君王掩面救不得,回看血泪相和流。黄埃散漫风萧索,云栈萦纡登剑阁。峨嵋山下少人行,旌旗无光日色薄。蜀江水碧蜀山青,圣主朝朝暮暮情。行宫见月伤心色,夜雨闻铃肠断声。天旋地转回龙驭,到此踌躇不能去。马嵬坡下泥土中,不见玉颜空死处。君臣相顾尽沾衣,东望都门信马归。归来池苑皆依旧,太液芙蓉未央柳。芙蓉如面柳如眉,对此如何不泪垂。春风桃李花开日,秋雨梧桐叶落时。西宫南内多秋草,落叶满阶红不扫。梨园弟子白发新,椒房阿监青娥老。夕殿萤飞思悄然,孤灯挑尽未成眠。迟迟钟鼓初长夜,耿耿星河欲曙天。鸳鸯瓦冷霜华重,翡翠衾

6、寒谁与共。悠悠生死别经年,魂魄不曾来入梦。临邛道士鸿都客,能以精诚致魂魄。为感君王辗转思,遂教方士殷勤觅。排空驭气奔如电,升天入地求之遍。上穷碧落下黄泉,两处茫茫皆不见。忽闻海上有仙山,山在虚无缥渺间。楼阁玲珑五云起,其中绰约多仙子。中有一人字太真,雪肤花貌参差是。金阙西厢叩玉扃,转教小玉报双成。闻道汉家天子使,九华帐里梦魂惊。揽衣推枕起徘徊,珠箔银屏迤逦开。云鬓半偏新睡觉,花冠不整下堂来。风吹仙袂飘飘举,犹似霓裳羽衣舞。玉容寂寞泪阑干,梨花一枝春带雨。含情凝睇谢君王,一别音容两渺茫。昭阳殿里恩爱绝,蓬莱宫中日月长。回头下望人寰处,不见长安见尘雾。惟将旧物表深情,钿合金钗寄将去。钗留一股合一扇

7、,钗擘黄金合分钿。但教心似金钿坚,天上人间会相见。临别殷勤重寄词,词中有誓两心知。七月七日长生殿,夜半无人私语时。在天愿作比翼鸟,在地愿为连理枝。天长地久有时尽,此恨绵绵无绝期。in3.txt:春江潮水连海平,海上明月共潮生。滟滟随波千万里,何处春江无月明!江流宛转绕芳甸,月照花林皆似霰;空里流霜不觉飞,汀上白沙看不见。江天一色无纤尘,皎皎空中孤月轮。江畔何人初见月?江月何年初照人?人生代代无穷已,江月年年只相似。不知江月待何人,但见长江送流水。白云一片去悠悠,青枫浦上不胜愁。谁家今夜扁舟子?何处相思明月楼?可怜楼上月徘徊,应照离人妆镜台。玉户帘中卷不去,捣衣砧上拂还来。此时相望不相闻,愿逐月

8、华流照君。鸿雁长飞光不度,鱼龙潜跃水成文。昨夜闲潭梦落花,可怜春半不还家。江水流春去欲尽,江潭落月复西斜。斜月沉沉藏海雾,碣石潇湘无限路。不知乘月几人归,落月摇情满江树。预期结果:in1.txt 春江花朝秋月夜,往往取酒还独倾-|-去来江口守空船,绕船月明江水寒-|-商人重利轻别离,前月浮梁买茶去-|-今年欢笑复明年,秋月春风等闲度-|-东船西舫悄无言,唯见江心秋月白-|-醉不成欢惨将别,别时茫茫江浸月-|-in2.txt 七月七日长生殿,夜半无人私语时-|-昭阳殿里恩爱绝,蓬莱宫中日月长-|-行宫见月伤心色,夜雨闻铃肠断声-|-in3.txt 不知乘月几人归,落月摇情满江树-|-斜月沉沉藏海

9、雾,碣石潇湘无限路-|-江水流春去欲尽,江潭落月复西斜-|-此时相望不相闻,愿逐月华流照君-|-可怜楼上月徘徊,应照离人妆镜台-|-谁家今夜扁舟子?何处相思明月楼?-|-不知江月待何人,但见长江送流水-|-人生代代无穷已,江月年年只相似-|-江畔何人初见月?江月何年初照人?-|-江天一色无纤尘,皎皎空中孤月轮-|-江流宛转绕芳甸,月照花林皆似霰;-|-滟滟随波千万里,何处春江无月明!-|-春江潮水连海平,海上明月共潮生-|-以上例子是检索文件中包含“月”字的诗句。看图说话通过下面的图来看具体的流程:代码package train;import java.io.IOException;impor

10、t java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Mapper.Context;import org.apache.hadoop.mapred

11、uce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.input.FileSplit;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.GenericOptionsParser;import train.InvertedIndex.Combine;import train.InvertedIn

12、dex.Map;import train.InvertedIndex.Reduce;/* * 查找包含指定字符串的句子 * author hadoop * */public class Search public static class Map extends Mapper private static final String word = 月; private FileSplit fileSplit; public void map(Object key,Text value,Context context) throws IOException, InterruptedExceptio

13、n fileSplit = (FileSplit)context.getInputSplit(); String fileName = fileSplit.getPath().getName().toString(); /按句号分割 StringTokenizer st = new StringTokenizer(value.toString(),。); while(st.hasMoreTokens() String line = st.nextToken().toString(); if(line.indexOf(word)=0) context.write(new Text(fileNam

14、e),new Text(line); public static class Reduce extends Reducer public void reduce(Text key,Iterable values,Context context) throws IOException, InterruptedException String lines = ; for(Text value:values) lines += value.toString()+-|-; context.write(key, new Text(lines); public static void main(Strin

15、g args) throws IOException, ClassNotFoundException, InterruptedException Configuration conf = new Configuration(); conf.set(mapred.job.tracker, localhost:9001); args = new Stringhdfs:/localhost:9000/user/hadoop/input/search_in,hdfs:/localhost:9000/user/hadoop/output/search_out; /检查运行命令 String otherA

16、rgs = new GenericOptionsParser(conf,args).getRemainingArgs(); if(otherArgs.length != 2) System.err.println(Usage search ); System.exit(2); /配置作业名 Job job = new Job(conf,search); /配置作业各个类 job.setJarByClass(InvertedIndex.class); job.setMapperClass(Map.class); job.setReducerClass(Reduce.class); job.set

17、OutputKeyClass(Text.class); job.setOutputValueClass(Text.class); FileInputFormat.addInputPath(job, new Path(otherArgs0); FileOutputFormat.setOutputPath(job, new Path(otherArgs1); System.exit(job.waitForCompletion(true) ? 0 : 1); 在map中,通过context.getInputSplit()获取到数据所在的文件,然后将读取的数据按句号分隔,并遍历,如果包含指定字符“月”

18、,则将文件名作为key,该句作value写出。在reduce中是一个简单的合并的过程。2.最大值 最小值 平均数问题描述给定一批数字,获取其中的最大值 最小值 以及求得平均数解决方案这个问题也很简单,首先在map中读取数据并进行切割,定义一个递增的数字作key,切下来的数字作为value.在reduce中遍历value,计算数量并求和同时比较大小获取最大最小值,最后求其平均数测试数据输入in1.txt1 1 1 1 1 1 1 1 1 1 5 5 5 5 5 5 5 5 5 5in2.txt5 8 10 17 328 9 13 32 21预期结果平均数 11最大值 32最小值 1看图说话代码p

19、ackage train;import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Map

20、per;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.GenericOptionsParser;import test.WordCount;/* * 计算平均数 * author hadoop * */public class Average1 pub

21、lic static class Map extends Mapper private static IntWritable no = new IntWritable(1); /计数作为key private Text number = new Text(); /存储切下的数字 public void map(Object key,Text value,Context context) throws IOException, InterruptedException StringTokenizer st = new StringTokenizer(value.toString(); while

22、(st.hasMoreTokens() number.set(st.nextToken(); context.write(no, new IntWritable(Integer.parseInt(number.toString(); public static class Reduce extends Reducer /定义全局变量 int count = 0; /数字的数量 int sum = 0; /数字的总和 int max = -2147483648; int min = 2147483647; public void reduce(IntWritable key,Iterable v

23、alues,Context context) throws IOException, InterruptedException for(IntWritable val:values) if(val.get()max) max = val.get(); if(val.get()min) min = val.get(); count+; sum+=val.get(); int average = (int)sum/count; /计算平均数 /System.out.println(sum+-+count+-+average); context.write(new Text(平均数), new In

24、tWritable(average); context.write(new Text(最大值), new IntWritable(max); context.write(new Text(最小值), new IntWritable(min); public static void main(String args) throws IOException, ClassNotFoundException, InterruptedException / TODO Auto-generated method stub Configuration conf = new Configuration();

25、/conf.set(mapred.job.tracker, localhost:9001); conf.addResource(config.xml); args = new Stringhdfs:/localhost:9000/user/hadoop/input/average1_in,hdfs:/localhost:9000/user/hadoop/output/average1_out; /检查运行命令 String otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs(); if(otherArgs.lengt

26、h != 2) System.err.println(Usage WordCount ); System.exit(2); /配置作业名 Job job = new Job(conf,average1 ); /配置作业各个类 job.setJarByClass(Average1.class); job.setMapperClass(Map.class); job.setReducerClass(Reduce.class); /Mapper的输出类型 *强调内容* job.setOutputKeyClass(IntWritable.class); job.setOutputValueClass(

27、IntWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs0); FileOutputFormat.setOutputPath(job, new Path(otherArgs1); System.exit(job.waitForCompletion(true) ? 0 : 1); 3.平均成绩问题描述给定三个输入文件,每个文件中分别写有多个学生的数学 英语 语文成绩,求每个学生三科的平均成绩。解决方案这个问题同样很简单,在map中解析数据并以学生名字作为key,成绩作为value输出。测试数据输入:in1.t

28、xt张三 80李四 83王五 91赵六 88in2.txt张三 92李四 100王五 94赵六 88in3.txt张三 89李四 98王五 84赵六 93预期结果张三 87李四 93王五 89赵六 89看图说话代码package train;import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;im

29、port org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.Mapper;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.Reducer.Context;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.GenericOptionsParser;import train.Average1.Map;import train.Average1.Reduce;/* * 计算每个学生的平均成绩 * author hadoop *

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1