MapReduce Java API实例-排序
生活随笔
收集整理的這篇文章主要介紹了
MapReduce Java API实例-排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
MapReduce Java API實例-統計單詞出現頻率:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119410169
上面進行項目環境搭建的基礎上。
怎樣實現對下面這組數據進行排序
?
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
輸入數據格式為每行有一數值,通過MapReduce實現數據的排序功能。
利用Map階段的Sort功能將要排序的數值作為map函數的key輸出,
并在reduce函數設置一個計數器。
1、Map代碼實現
package com.badao.sort;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException; import java.util.StringTokenizer;public class SortMapper extends Mapper<Object,Text,IntWritable,IntWritable> {public static IntWritable data = new IntWritable();//map將輸入中value化成IntWritable類型,作為輸出的key@Overridepublic void map(Object key, Text value, Context context) throws IOException, InterruptedException {String line = value.toString();data.set(Integer.parseInt(line));//通過write函數寫入到本地文件context.write(data,new IntWritable(1));} }2、Reduce代碼實現
package com.badao.sort;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;public class SortReducer extends Reducer<IntWritable, IntWritable,IntWritable,IntWritable> {public static IntWritable linenum = new IntWritable(1);public static int i =1;@Overridepublic void reduce(IntWritable key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {context.write(new IntWritable(i),key);++i;} }3、Job實現
package com.badao.sort;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; import org.apache.hadoop.mapreduce.lib.reduce.IntSumReducer;import java.io.IOException;public class SortJob {public static void main(String[] args) throws InterruptedException, IOException, ClassNotFoundException {jobLocal();}public static void jobLocal()throws IOException, ClassNotFoundException, InterruptedException{Configuration conf = new Configuration();//實例化一個作業,word count是作業的名字Job job = Job.getInstance(conf, "jobsort");//指定通過哪個類找到對應的jar包job.setJarByClass(SortJob.class);//為job設置Mapper類job.setMapperClass(SortMapper.class);//為job設置reduce類job.setReducerClass(SortReducer.class);//為job的輸出數據設置key類job.setOutputKeyClass(IntWritable.class);//為job輸出設置value類job.setOutputValueClass(IntWritable.class);//為job設置輸入路徑,輸入路徑是存在的文件夾/文件FileInputFormat.addInputPath(job,new Path("D:\\sortData\\sort.txt"));//為job設置輸出路徑FileOutputFormat.setOutputPath(job,new Path("D:\\sortdataout"));job.waitForCompletion(true);}}運行后查看輸出文件結果
?
總結
以上是生活随笔為你收集整理的MapReduce Java API实例-排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MapReduce Java API实例
- 下一篇: Three.js中实现ASCII文本动画