更新時(shí)間:2020-11-04 來源:黑馬程序員 瀏覽量:
MapReduce程序會(huì)根據(jù)輸入的文件產(chǎn)生多個(gè)map任務(wù)。Hadoop提供的Mapper類是實(shí)現(xiàn)Map任務(wù)的一個(gè)抽象基類,該基類提供了一個(gè)map()方法,默認(rèn)情況下,Mapper類中的map()方法是沒有做任何處理的。
如果我們想自定義map()方法,我們只需要繼承Mapper類并重寫map()方法即可。接下來,我們以詞頻統(tǒng)計(jì)為例,自定義一個(gè)map()方法,具體代碼如文件所示。
文件 WordCountMapper.java
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordCountMapper extends Mapper<LongWritable, Text,
Text, IntWritable> {
@Override
protected void map(LongWritable key, Text value, Mapper<
LongWritable, Text, Text, IntWritable>.Context context)
throws IOException, InterruptedException {
// 接收傳入進(jìn)來的一行文本,把數(shù)據(jù)類型轉(zhuǎn)換為String類型
String line = value.toString();
// 將這行內(nèi)容按照分隔符切割
String[] words = line.split(" ");
// 遍歷數(shù)組,每出現(xiàn)一個(gè)單詞就標(biāo)記一個(gè)數(shù)組1 例如:<單詞,1>
for (String word : words) {
// 使用context,把Map階段處理的數(shù)據(jù)發(fā)送給Reduce階段作為輸入數(shù)據(jù)
**context.write(new Text(word), new IntWritable(1));**
}
}
}
猜你喜歡:
Spark有哪些特點(diǎn),Spark的生態(tài)系統(tǒng)包含哪些組件?
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個(gè)工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個(gè)工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19