Hadoop经典案例——单词统计

通过 Hadoop经典案例——单词统计,来演示 Hadoop集群的简单使用。

(1)打开 HDFS 的 UI,选择Utilities→Browse the file system查看分布式文件系统里的数据文件,可以看到新建的HDFS上没有任何数据文件。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(2)先在集群主节点namenode上的/export/data/目录下,执行“vi word. txt”指令新建一个 word. txt文本文件,并编写一些单词内容。

[root@namenode data]# vi word.txt

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### Hadoop WordCount 词频统计教程 Hadoop 的 `WordCount` 是一个经典的入门案例,用于演示如何通过 MapReduce 计算框架实现数据处理。以下是关于如何使用 Hadoop 自带的 `WordCount` 程序进行词频统计的具体说明。 #### 1. 准备工作 在运行 `WordCount` 程序之前,需要完成以下准备工作: - **安装并配置 Hadoop**:确保已经成功安装 Hadoop 并能够正常启动集群环境[^3]。 - **输入文件准备**:准备好待分析的文本文件,并将其上传到 HDFS 中作为输入数据源。可以使用如下命令将本地文件复制到 HDFS 上: ```bash hdfs dfs -put /path/to/local/input.txt /input/ ``` #### 2. 编写 WordCount 程序 如果未提供现成的 `WordCount` 源码,则可以根据标准模板编写 Java 类来定义 Mapper 和 Reducer 功能逻辑: ##### (a) Mapper 阶段 Mapper 负责读取每行记录并将其中的文字拆分为单独词语输出键值对形式 `<word, 1>` 表示该单词出现了一次。 ```java import org.apache.hadoop.mapreduce.Mapper; import java.io.IOException; public class WordCountMap extends Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); String[] tokens = line.split("\\s+"); for(String token : tokens){ word.set(token.toLowerCase()); context.write(word,one); } } } ``` 此处代码实现了基本功能即按空白符分割字符串[^1]。 ##### (b) Reducer 阶段 Reducer 接收来自多个 Mappers 输出相同 Key 对应的所有 Values 数组计算总数返回最终结果。 ```java import org.apache.hadoop.mapreduce.Reducer; import java.io.IOException; public class WordCountReduce extends Reducer<Text,IntWritable,Text,IntWritable>{ @Override public void reduce(Text key , Iterable<IntWritable> values ,Context context)throws IOException,InterruptedException{ int sum=0; for(IntWritable val:values){ sum +=val.get(); } context.write(key,new IntWritable(sum)); } } ``` 此部分完成了累加操作从而得出每个唯一关键词在整个文档集中总共出现了多少次数[^2]。 #### 3. 执行 Job 提交流程 构建好项目之后编译打包成 jar 文件提交给 hadoop 进程执行即可查看效果。 假设我们已创建名为 MyWC.jar 包含以上两个类以及驱动器组件Driver.java ,那么可以通过下面指令调用它: ```bash hadoop jar MyWC.jar com.example.WordCount /input/path /output/path ``` #### 总结 整个过程展示了怎样利用 Apache Hadoop 来解决大规模文本挖掘中的简单问题——统计各词汇频率分布情况。这不仅帮助理解 MapReduce 工作原理而且为进一步学习复杂算法打下基础。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛_Chenpangzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值