当前位置: 首页 > news >正文

晋中市两学一做网站2023年税收最新政策

晋中市两学一做网站,2023年税收最新政策,有没有永久免费的进销存软件,域名购买方法本文我们学习MapReduce默认分区以及自定义分区实践 当我们要求将统计结果按照条件输出到不同文件(分区)&#xff0c;比如按照统计结果将手机归属地不同省份输出到不同文件中(分区) 1.默认Partitioner分区 public class HashPartitioner<K, V> extends Partitioner<…

本文我们学习MapReduce默认分区以及自定义分区实践

当我们要求将统计结果按照条件输出到不同文件(分区),比如按照统计结果将手机归属地不同省份输出到不同文件中(分区)

1.默认Partitioner分区

public class HashPartitioner<K, V> extends Partitioner<K, V> {public int getPartition(K key, V value,int numReduceTasks) {return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;}
}

默认分区是根据key的hashCode对ReduceTasks[通过job.setNumReduceTasks(2)赋值]取模得到,用户没法控制key存储到哪个分区

2. 自定义Partitioner分区

  • 我们在resources目录下新建phone2.txt
1 13764368888 196.168.0.11 1116 854 200
2 13764368888 196.168.0.11 1136 834 200
3 13764368888 196.168.0.11 1146 824 200
4 13764368888 196.168.0.11 1116 804 200
5 13664368888 196.168.0.11 1116 854 200
6 13864368888 196.168.0.11 1136 834 200
7 13964368888 196.168.0.11 1146 824 200
8 13764368888 196.168.0.11 1116 804 200
  • 新建自定义ProvincePartitioner类
public class ProvincePartitioner extends Partitioner<Text, FlowBean> {@Overridepublic int getPartition(Text text, FlowBean flowBean, int numPartitions) {// Text是手机号String phone = text.toString().substring(0, 3);// 注意分区号需要连续,从0开始分区int partition;if ("136".equals(phone)) {partition = 0;} else if ("137".equals(phone)) {partition = 1;} else if ("138".equals(phone)) {partition = 2;} else if ("139".equals(phone)) {partition = 3;} else {partition = 4;}return partition;}
}
  • 新建FlowPartitionerDriver类
public class FlowPartitionerDriver {public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {Configuration conf = new Configuration();Job job = Job.getInstance(conf, "flowPartitioner");job.setJarByClass(FlowPartitionerDriver.class);job.setMapperClass(FlowMapper.class);job.setCombinerClass(FlowReduce.class);job.setReducerClass(FlowReduce.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(FlowBean.class);// 关联自定义分区类job.setPartitionerClass(ProvincePartitioner.class);// 设置ReduceTask任务数job.setNumReduceTasks(5);FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}
}
  • 传参运行
E:\Java\blogCode\hadoop\src\main\resources\phone2.txt E:\Java\blogCode\hadoop\src\main\resources\phone_ret2.txt

由图可知,产生了5个分区,实现了手机归属地不同省份输出到不同文件中

3.分区总结

  1. 如果ReduceTask数量>getPartition结果数,则会多产生空的part-r-000xx文件
  2. 如果1<ReduceTask数量<getPartition结果数,则有一部分数据无处写,会Exception
  3. 如果ReduceTask数量=1,则不管MapTask输出多少分区文件,最终结果都会交给一个ReduceTask,只会产生一个文件part-r-00000
  4. 分区号必须从零开始,逐一累加

欢迎关注公众号算法小生与我沟通交流

http://www.yayakq.cn/news/467365/

相关文章:

  • 网站备份与恢复开发者应用
  • 企业文化简介网站怎么做宣传片拍摄制作价钱多少钱
  • 怎么提高网站的流量网站建设 维护 编程
  • 网站备案没通过wordpress采集插件
  • 商丘做网站公司新站seo快速收录网页内容页的方法北京市住房和城乡建设厅
  • 凡客网站建设怎么样安全员怎么网站中做备案
  • 北京建设工程造价管理协会网站网站制作公司高端
  • 互联网站建设维护有关岗位wordpress批量删除评论
  • 专业网站设计公司有哪些网站建设网站制作有限
  • 福建建设中心网站百度app旧版本下载
  • 云南网站备案系统福州网站设计网址
  • 产品包装设计网站找谁做需要一个网站
  • 做商品网站的教学视频教程建设银行网站怎么查余额
  • 网站建设论证方案中小学校园网站开发技术
  • 北京商城网站建设淘宝网站优化实例
  • wordpress企业仿站视频教程暴雪战网国际服
  • 玉山建设局网站建设网站招标文件
  • 建手机网站的软件有哪些wordpress添加页面
  • 建网站首选公司十大免费生产管理软件
  • 网站图片导入wordpress什么网页比较好做
  • 有趣的网站名水库信息化网站建设
  • 网站的设计方案在哪里济南网站建设(力选聚搜网络)
  • 做那个的视频网站如何修改wordpress登入地址
  • 淄博网站建设yx718广东建设部网站
  • 如何解决网站访问拥挤seo网站快排
  • 网站建设服务定制佛山规划建设局网站
  • 网站开发设计有限公司网站建设pad版本是什么
  • 手机网站页面布局河北商城网站建设价格
  • 建设苏州旅游网站的方案策划书泰州市住房和城乡建设局官方网站
  • 餐饮网站开发背景wordpress组合模板