使用Hadoop自带的程序包,对集群中/data/email_log.txt文件做词频统计,要求输出目录设置为/data/output
时间: 2024-10-09 17:12:11 浏览: 41
使用Hadoop MapReduce进行词频统计通常涉及以下几个步骤:
1. **数据切分(Input Splitting)**:首先,Hadoop会将大数据文件`/data/email_log.txt`分割成一系列小块(称为Splits),并分配给集群中的任务节点处理。
2. **Map阶段**:每个节点上的Mapper读取指定的输入块,然后通过解析文本内容,将单词作为键(Key)和一个默认值(如1)作为值(Value)。例如,可以使用正则表达式提取单词。
```bash
hadoop jar hadoop-streaming.jar -mapper "cat /data/email_log.txt | grep -oE '\w+'" -input /data/email_log.txt -output intermediate_data
```
3. **Shuffle阶段**:所有Mapper完成后,Hadoop将中间结果(intermediate_data)按照键进行排序并合并到Reducer的工作单元中。
4. **Reduce阶段**:Reducer接收来自多个Mapper的键,并累加对应的值(在这里就是单词计数)。每个单词及其计数值作为一个键值对发送到输出。
5. **Output阶段**:最后,Reducer的输出会被定向到用户指定的输出目录`/data/output`。你可以使用`hadoop fs -put`命令将结果文件上传到HDFS,或者直接在本地查看。
```bash
hadoop jar hadoop-streaming.jar -reducer "sort;uniq;awk '{print $1, $2}'" -input intermediate_data -output /data/output
```
执行上述命令后,你应该会在`/data/output`路径下看到一个或多个包含词频信息的文本文件。
阅读全文