博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[MapReduce_8] MapReduce 中的自定义分区实现
阅读量:6466 次
发布时间:2019-06-23

本文共 923 字,大约阅读时间需要 3 分钟。


 

0. 说明

  设置分区数量 && 编写自定义分区代码

 

 


 

1. 设置分区数量

  分区(Partition)

  分区决定了指定的 Key 进入到哪个 Reduce 中

  分区目的:把相同的 Key 发送给同一个 Reduce

  默认 hash 分区,算法

// 返回的分区号(key.hashCode() & Integer.MAX_VALUE) % numReduceTasks

 

  设置分区数

job.setNumReduceTasks(3);

 


 2. 代码编写

  在  代码基础之上进行以下操作

  实现将文本中的数字存放在分区0,数字之外的内容放置到分区1

  【2.1 编写 MyPartition.java】

package hadoop.mr.partition;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Partitioner;/** * MapReduce 自定义分区 */public class MyPartition extends Partitioner
{ /** * 自定义分区将数字放在0号分区,其余放在1号分区 */ @Override public int getPartition(Text key, IntWritable value, int numPartitions) { try { Integer.parseInt(key.toString()); return 0; } catch (Exception e) { return 1; } }}

 

  【2.2 修改 WCApp.java】

   

 

  【2.3 最终结果】

      

 

 

 

 


 

转载于:https://www.cnblogs.com/share23/p/9779593.html

你可能感兴趣的文章
生活杂事--度过十一中秋
查看>>
Pyrex也许是一个好东西
查看>>
Java内部类总结
查看>>
NeHe OpenGL第二课:多边形
查看>>
WINFORM WPF字体颜色相互转换
查看>>
能力不是仅靠原始积累(三)
查看>>
实战:使用终端服务网关访问终端服务
查看>>
彻底学会使用epoll(一)——ET模式实现分析
查看>>
路由器的密码恢复
查看>>
【Android 基础】Android中全屏或者取消标题栏
查看>>
Xilinx 常用模块汇总(verilog)【03】
查看>>
脱离标准文档流(2)---定位
查看>>
IO流之字符流
查看>>
集合异常之List接口
查看>>
Softmax回归
查看>>
紫书 习题11-11 UVa 1644 (并查集)
查看>>
App工程结构搭建:几种常见Android代码架构分析
查看>>
使用openssl进行证书格式转换
查看>>
ZOJ 3777 Problem Arrangement
查看>>
HTML中动态生成内容的事件绑定问题【转载】
查看>>