Hive自定义分区器流程

1. 环境说明

当前环境采用Hadoop3.1.3以及Hive3.1.2版本!

2. 自定义类

自定义类实现org.apache.hadoop.mapred.Partitioner(必须为这个,Hive中使用的是老的API)接口,这里只是做测试,所以所有数据我现在全部发送至0号分区
注意分区器中Key和Value类型!!!
package com.wh;import org.apache.hadoop.hive.ql.io.HiveKey;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.Partitioner;public class MyPartitioner implements Partitioner<HiveKey, BytesWritable> {//实现每条数据的分区逻辑(这里选择将所有数据发送至0号分区)@Overridepublic int getPartition(HiveKey s, BytesWritable s2, int numPartitions) {return 0;}//读取配置信息的方法@Overridepublic void configure(JobConf job) {}
}

3. 打包到集群/opt/hive/lib/目录下

将写好的代码打包上传至集群,放置在Hive的安装路径下的lib目录即可

4. 在Hive中进行测试

4.1 添加jar包

进入Hive的客户端执行
hive (default)> add jar /opt/hive/lib/partition.jar;

4.2 设置Hive中使用自定义的分区器

hive (default)> set hive.mapred.partitioner = com.wh.MyPartitioner;

4.3 修改Reducer数量

hive (default)> set mapreduce.job.reduces=3;

4.4 执行SQL进行测试

测试数据展示

hive (default)> select empno from emp;
OK
empno
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934

使用自定义分区器对empno字段进行分区处理

hive (default)> insert overwrite local directory '/opt/data/distribute-result' select * from emp distribute by deptno sort by empno desc;

4.5 查看结果

-rw-r--r--. 1 atguigu atguigu 707 11月  1 13:13 000000_0
-rw-r--r--. 1 atguigu atguigu   0 11月  1 13:13 000001_0
-rw-r--r--. 1 atguigu atguigu   0 11月  1 13:13 000002_0

发现只有0号分区有数据,自定义Hive分区器完成!!!

Hive自定义分区器流程相关推荐

  1. hive自定义分区器

    Hive自定义分区器流程 1.自定义类 实现org.apache.hadoop.mapred.Partitioner(必须为这个,Hive中使用的是老的API)接口 package com.ailib ...

  2. IDEA本地运行Spark项目[演示自定义分区器]并查看HDFS结果文件

    文章目录 一.提出问题 二.解决问题 (一)添加IP到主机名的映射 (二)在本地准备Spark库文件 (三)在IDEA里创建Scala项目 (四)添加Spark库文件到项目 (五)创建自定义分区器 ( ...

  3. Spark自定义分区器

    spark目前支持两个分区器,分别是HashPartitioner和RangePartitioner. 均继承自Partitioner,有共同方法 - def numPartitions --分区器的 ...

  4. 【大数据开发】SparkCore——自定义排序、实现序列化、自定义分区器

    文章目录 一.自定义排序四种方式.实现序列化 二.案例:自定义分区器 一.自定义排序四种方式.实现序列化 前面两种是样例类实现.普通类实现 第三种方式可以不实现序列化接口 用的最多的还是第四种方式,第 ...

  5. kafka自定义生产者分区器、自定义消费者分区器

    目录 1 默认分区 1.1 键key的作用 1.2 键的分区 2 生产者自定义分区 2.1 使用场景分析 2.2 自定义分区器要实现Partitioner接口 2.3 生产者使用分区器 3 消费者自定 ...

  6. flink keyby、shuffle、 rebalance、rescale、 broadcast、global、自定义分区算子以及各分区器源码

    文章目录 前言 1. 随机分区 2. 轮询分区 3. 重缩放分区 4. 广播 5. 全局分区 6. 自定义分区 前言   flink中keyBy是一种按照键的哈希值来进行重新分区的操作,至于分区是否均 ...

  7. Spark的RDD分区器

    RDD 分区器 基本介绍 Spark 目前支持Hash 分区.Range 分区和用户自定义分区.Hash 分区为当前的默认分区.分区器直接决定了RDD 中分区的个数.RDD 中每条数据经过Shuffl ...

  8. kafka模拟生产-消费者以及自定义分区

    2019独角兽企业重金招聘Python工程师标准>>> 基本概念 kafka中的重要角色   broker:一台kafka服务器就是一个broker,一个集群可有多个broker,一 ...

  9. Kafka分区分配计算(分区器Partitions)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

最新文章

  1. h5自定义相机界面_MIUI 12全新相机发布,多款相机图标进行重绘,可升级机型一览...
  2. (三)SSO之CAS框架单点退出,退出到CAS登录界面
  3. Linux 如何快速找到运行中的进程
  4. java面试 mysql分库分表_MySQL性能管理及架构设计(三):SQL查询优化、分库分表 - 完结篇...
  5. [翻译]Triggerless design.md
  6. linux结束进程_生人勿近之Linux里养僵尸
  7. Avalonia跨平台入门第十五篇之ListBox聊天窗口
  8. 【window】git安装教程
  9. 常用控件 winform
  10. LSTM公式详解推导
  11. 500内部privoxy错误_【热议】喝崂山啤酒中奖500听,却只能兑换500毫升?!
  12. 【投资策略】2022 年大类资产配置展望:稳中求进-中金公司
  13. C#中判断服务器图片是否存在
  14. Hibernate持久化对象的三种状态深入理解
  15. 4-2 数据模型的生成
  16. RFID将成为物联网革命的首战
  17. mysql-5.7安装、配置
  18. Blue Prism宣布融资1亿英镑,创始人兼首席执行官宣布离职
  19. MINIST数据集读取
  20. 树莓派+OpneVino环境搭建以及快速实现人脸识别

热门文章

  1. 表单验证与正则表达式
  2. python 从4399获取小游戏
  3. Python自学教程
  4. C语言数据类型及其大小计算
  5. python爬虫--cookie、防盗链、代理
  6. Linux命令之中英文对照
  7. 分布式架构实现概述(大型网站技术架构-读后感)
  8. matlab 0x1 sym,matlab解方程0x1sym
  9. java计算机毕业设计水库洪水预报调度系统源代码+数据库+系统+lw文档
  10. Vert.x(vertx) 认证和授权详解(包含认证和授权在Web系统中的使用)