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

自定义分区

通过简单例子了解partition分区类的重写方法

分区是在MR的过程中进行的,属于Shuffle阶段

但是在Job端不要忘记进行调用:job.setPartitionerClass(xxx.class)

按照年龄分区:

class AgePartitioner extends Partitioner<MyComparable, NullWritable> {@Overridepublic int getPartition(MyComparable key, NullWritable value, int numPartitions) {int partition = 0;switch (key.age) {case 22:partition = 1;break;case 23:partition = 2;break;case 24:partition = 3;break;}return partition;}
}

按照数据倾斜分区:

// 自定义分区:在Map阶段给key加上随机后缀,基于后缀返回不同的分区编号
class SkewPartitioner extends Partitioner<Text, IntWritable> {@Overridepublic int getPartition(Text text, IntWritable intWritable, int numPartitions) {String key = text.toString();int partitions = 0;// 只对数据倾斜的key做特殊处理if ("hadoop".equals(key.split("_")[0])) {switch (key) {
//                case "hadoop_0":
//                    partitions = 0;
//                    break;case "hadoop_1":partitions = 1;break;case "hadoop_2":partitions = 2;break;}} else {// 正常的key还是按照默认的Hash取余进行分区partitions = (key.hashCode() & Integer.MAX_VALUE) % numPartitions;}return partitions;}
}

http://www.lryc.cn/news/436448.html

相关文章:

  • 计算机三级 - 数据库技术 - 第十四章 数据仓库与数据挖掘 笔记
  • 低代码移动端集成:简化开发、提升用户体验的利器
  • Redis入门1
  • SHT20温湿度传感器的C语言驱动
  • 系统架构师考试学习笔记第四篇——架构设计实践知识(16)层次式架构设计理论与实践
  • 顶踩Emlog插件源码
  • 国庆出游季,南卡Runner Pro5骨传导耳机让旅途更完美!
  • HarmonyOS NEXT 封装实现好用的网络模块(基于最新5.0的API12)
  • Visual Studio提示:无法安装CPpython.Exe.x64
  • 计算机网络 ---- 电路交换、报文交换、分组交换
  • OceanBase 基于企业版本OAT安装与OMS安装与InfluxDB的集成
  • 【油猴脚本】tampermonkey 的使用方法,油猴脚本(tampermonkey )编写方法,油猴脚本(tampermonkey )获取脚本的方法
  • Keil MDK报错:Browse information of one or more files is not available----解决方法:
  • C# WPF编程-串口通信
  • MybatisPlus中tableName、tableId 和 tableField
  • 《2024中国数据要素产业图谱2.0版》重磅发布
  • 算法-图论(建图,拓扑排序)
  • 天童教育:课外阅读图书推荐
  • “汉语新解” Prompt新高度,火爆的李继刚
  • 论文:AOP框架安全框架-系统架构师(六十六)
  • 用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:下(人物动画)
  • Android 优雅封装Glide
  • 智能优化算法-粒子群优化算法(PSO)(附源码)
  • vue系统获取授权平台授权码实现单点登录、注销功能
  • Java之枚举
  • 八、适配器模式
  • 关于E-R图
  • DVWA通关教程
  • 网络学习-eNSP配置VRRP
  • Kafka【九】如何实现数据的幂等性操作