1. 程式人生 > 其它 >hadoop_統計文字單詞WordCountReduce&WordCount

hadoop_統計文字單詞WordCountReduce&WordCount

WordCountReduce.java
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
/*
* Text 輸入的字串型別,序列化
* IntWritable 輸入一串1,序列化
* Text 輸出的字串型別,序列化
* IntWritable 輸出的求和陣列,序列化*/
public class WordCountReduce extends Reducer<Text, IntWritable,Text,IntWritable> {//
IntWritable序列化 /* * key 輸入單詞名字 * values 輸入一串1 * content 用於輸出的工具*/ @Override protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { //求和 int sum=0; for(IntWritable number:values){//不能寫int要寫IntWritable
//遍歷一群1 sum += number.get(); } context.write(key,new IntWritable(sum));//sum是int型,沒有序列化,不能直接輸出,所以寫成new IntWritable(sum) } }

WordCount.java

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; /** * @Classname WordCount * @Description TODO * @Date 2019/12/6 22:12 * @Created by KingSSM */ public class WordCount { public static void main(String[] args) throws Exception { //定義配置物件 Configuration conf = new Configuration(); //定義一個工作任務物件 Job job = Job.getInstance(conf); //獲取map階段的一個物件 job.setMapperClass(WordCountMap.class); //指定map階段的一個輸出key job.setMapOutputKeyClass(Text.class); //指定map階段輸出的values型別 job.setMapOutputValueClass(IntWritable.class); //map階段的輸入檔案 FileInputFormat.setInputPaths(job,new Path("C:/Users/Admin/OneDrive/桌面/123.txt")); //指定Reduce的類 job.setReducerClass(WordCountReduce.class); //指定reduce階段的一個輸出key job.setOutputKeyClass(Text.class); //指定reduce階段輸出的values型別 job.setOutputValueClass(IntWritable.class); //指定reduce階段的輸出檔案 FileOutputFormat.setOutputPath(job,new Path("C:/Users/Admin/OneDrive/桌面/456.txt"));//生成的資料夾中的最後一個檔案裡,16表示換行次數,1表示單詞出現次數,單詞之間以空格或換行分隔 //submit job.waitForCompletion(true); } }