# wiley-wordcount **Repository Path**: hhland/wiley-wordcount ## Basic Information - **Project Name**: wiley-wordcount - **Description**: 本部分为《开发MapReduce WordCount程序》的章节实验《运行WordCount—程序》 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2016-10-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 本部分为《开发MapReduce WordCount程序》的章节实验《运行WordCount—程序》。 实验目标:编写一个MapReduce程序WordCount,使其能够: 1.计算单词数; 2.计算每个单词的出现频率; 实验背景: 一家知名餐厅现有大量非结构化数据(千兆字节),其中包括从各种社交媒体网站、反馈记录薄和其他来源收集到的关于食物和服务的信息,餐厅的高层管理者希望找到顾客对(餐厅)维护、服务员服务、食品质量、整洁度、卫生和餐厅等的积极反馈和消极反馈,以改进服务质量,提高顾客满意度。 管理层意识到分析数据集中独特和重复的单词或字符会很有帮助。通过确定关键词和关键词密度,然后把每个关键词按照顾客的积极和消极反馈进行分类,餐厅可以明确哪些服务需要改进。本次实验练习,我们将借助WordMapper MapReduce程序帮助餐厅管理层分析数据。 实验任务分解: 1.WordCount程序读取文本文件并计算文件中单词的出现频率,输入和输出文件均为文本文件。 2.MapReduce算法中的mapper函数接受一行(信息)作为输入并将其拆分成单词,之后,mapper会返回key为word,value为1的键值对。 3.MapReduce算法中的reducer函数求得每个单词出现次数的总和,并为该单词生成一个键值对的输出,返回其出现次数的总和。此外,combiner作为本地的reducer函数,可以合并map输出,将每个单词合并为一条单独的记录,从而减少网络传输的数据量,达到优化的目的。 实验步骤: 1.创建Eclipse项目,将以下JAR文件导入库中: commons-collections-3.2.1.jar commons-confi guration-1.6.jar commons-httpclient-3.0.1.jar commons-lang-2.4.jar commons-logging-1.1.1.jar commons-logging-api-1.0.4.jar jackson-core-asl-1.8.8.jar jackson-mapper-asl-1.8.8.jar log4j-1.2.15.jar hadoop-core-1.0.4.jar 2.创建WordMapper类,该类中包括一个mapper、一个reducer和一个driver; 3.编写mapper的源代码; 3.1 创建一个IntWritable变量“one”,其默认值为1。 3.2 将文本类型的输入行转换为一个字符串。 3.3 运用tokenizer(分词器)将每行输入拆分成若干个单词。 3.4 遍历每个单词,并形成键值对,如下: a. 将字符串类型的token中的每个词赋值给一个文本类型的words。 b. 为每个单词形成一个键值对,并将其添加到输出集合中。 4.编写mapper的源代码; 4.1 初始化变量“totalsum”,其默认值为0。 4.2 遍历一个key的所有value值并把它们累加起来。 4.3 将key和value值总和添加到输出集合中 5.编写driver的源代码; 5.1 配置输入和输出文件。 5.2 配置mapper、combiner和reducer。 5.3 在主函数中,把ToolRunner.run函数的返回值赋给结果变量 6.编译、打包生成JAR文件 7.发布文件到HDFS: bin/hadoop dfs -copyFromLocal /home/wcbdd/Desktop/loaddata1 /LOAD bin/hadoop dfs -ls hdfs:/ 8.访问Web链接localhost:50070,选择wordcount文件; 9.运行MapReduce程序,查看WordMapper运行结果; 10.复制结果到本地文件系统: bin/hadoop dfs -copyToLocal hdfs:/tex1.text /home/wcbdd/output.txt 独立完成实验后后填写实验报告,并在截至日前提交实验报告。 本实验数据:http://pan.baidu.com/s/1ntnaLDJ 实验报告:http://pan.baidu.com/s/1bnFdeLh