hadoop使用mapreduce统计词频_Hadoop基础-08-MapReduce词频统计

本文详细介绍了如何使用Hadoop的MapReduce框架进行词频统计,包括自定义Mapper、Reducer类的实现,数据类型的选择,以及Combiner优化。通过示例展示了从读取输入文件到输出结果的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义Mapper实现

WordCountMapper extends Mapper

public class Mapper {

......

}

KEYIN : mapping 输入 key 的类型,即每行的偏移量offset(每行第一个字符在整个文本中的位置),Long 类型,对应 Hadoop 中的 LongWritable 类型;

VALUEIN : mapping 输入 value 的类型, 即其实就是一行行的字符串,即每行数据;String 类型,对应 Hadoop 中 Text 类型;

KEYOUT :mapping 输出的 key 的类型,即每个单词;String 类型,对应 Hadoop 中 Text 类型;

VALUEOUT:mapping 输出 value 的类型,即每个单词出现的次数;这里用 int 类型,对应 IntWritable 类型。

WordCountMapper

package com.bigdata.hadoop.mr.wc;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class WordCountMapper extends Mapper {

@Override

protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

//把value按照指定的分割符分开

String[] words=value.toString().split("\t");

for(String word: words){

context.write(new Text(word),new IntWritable(1));

}

}

}

自定义Reducer实现

public class WordCountReducer extends Reducer {

@Override

protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {

}

}

Text数据类型 :字符串类型 String

IntWritable : reduce阶段的输入类型 int

Text : reduce阶段的输出数据类型 String类型

IntWritable : 输出词频个数 In

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值