# MapReduceDemo **Repository Path**: LJKPI_admin/map-reduce-demo ## Basic Information - **Project Name**: MapReduceDemo - **Description**: MapReduce案例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-29 - **Last Updated**: 2022-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 一. 案例篇 #### 1.word_count ```java //计算单词出现次数 ``` #### 2.writable:自定义返回序列化结果对象 ```java //应用场景:自定义返回序列化结果对象 //通过实现Writable接口自定义序列化结果 ``` #### 3.combine_input:用于小文件过多的场景,规划到一个切片 ```java //应用场景:CombineTextInputFormat 用于小文件过多的场景,它可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个 MapTask 处理 // 如果不设置 InputFormat,它默认用的是 TextInputFormat.class job.setInputFormatClass(CombineTextInputFormat.class); //虚拟存储切片最大值设置 4m CombineTextInputFormat.setMaxInputSplitSize(job, 4194304); //适用于自定义切片机制 ``` #### 4.partition:要求将统计结果按照条件输出到不同文件中(分区) ```java //实现Partitioner类 //关联job //指定自定义分区器 job.setPartitionerClass(CustomPartitioner.class); //同时指定相应数量的 ReduceTask job.setNumReduceTasks(5); ``` #### 5.writable_comparable:全排序 ```java //实现WritableComparable接口 重写compareTo 方法 // MapTask和ReduceTask均会对数据按 照key进行排序 ``` #### 6.writable_comparable:区内排序 ```java //1.实现Partitioner类 关联分区类 job.setPartitionerClass(CustomPartitioner.class); //2.//同时指定相应数量的 ReduceTask job.setNumReduceTasks(5); //3.实现WritableComparable接口 重写compareTo 方法 ``` #### 7.reduce_combiner:是对每一个MapTask的输出进行局部汇总,以减小网络传输量 ```java /** *设置预聚合 以减小网络传输量 */ job.setCombinerClass(WordCountReducer.class); ``` #### 8.自定义OutputFormat:输出数据到MySQL/HBase/Elasticsearch等存储框架中 ```java //改写RecordWriter,具体改写输出数据的方法write()。 // 继承 FileOutputFormat 创建LogOutputFormat //job.setOutputFormatClass(LogOutputFormat.class); //LogOutputFormat ```