Hive自定义分区器流程
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自定义分区器流程相关推荐
- hive自定义分区器
Hive自定义分区器流程 1.自定义类 实现org.apache.hadoop.mapred.Partitioner(必须为这个,Hive中使用的是老的API)接口 package com.ailib ...
- IDEA本地运行Spark项目[演示自定义分区器]并查看HDFS结果文件
文章目录 一.提出问题 二.解决问题 (一)添加IP到主机名的映射 (二)在本地准备Spark库文件 (三)在IDEA里创建Scala项目 (四)添加Spark库文件到项目 (五)创建自定义分区器 ( ...
- Spark自定义分区器
spark目前支持两个分区器,分别是HashPartitioner和RangePartitioner. 均继承自Partitioner,有共同方法 - def numPartitions --分区器的 ...
- 【大数据开发】SparkCore——自定义排序、实现序列化、自定义分区器
文章目录 一.自定义排序四种方式.实现序列化 二.案例:自定义分区器 一.自定义排序四种方式.实现序列化 前面两种是样例类实现.普通类实现 第三种方式可以不实现序列化接口 用的最多的还是第四种方式,第 ...
- kafka自定义生产者分区器、自定义消费者分区器
目录 1 默认分区 1.1 键key的作用 1.2 键的分区 2 生产者自定义分区 2.1 使用场景分析 2.2 自定义分区器要实现Partitioner接口 2.3 生产者使用分区器 3 消费者自定 ...
- flink keyby、shuffle、 rebalance、rescale、 broadcast、global、自定义分区算子以及各分区器源码
文章目录 前言 1. 随机分区 2. 轮询分区 3. 重缩放分区 4. 广播 5. 全局分区 6. 自定义分区 前言 flink中keyBy是一种按照键的哈希值来进行重新分区的操作,至于分区是否均 ...
- Spark的RDD分区器
RDD 分区器 基本介绍 Spark 目前支持Hash 分区.Range 分区和用户自定义分区.Hash 分区为当前的默认分区.分区器直接决定了RDD 中分区的个数.RDD 中每条数据经过Shuffl ...
- kafka模拟生产-消费者以及自定义分区
2019独角兽企业重金招聘Python工程师标准>>> 基本概念 kafka中的重要角色 broker:一台kafka服务器就是一个broker,一个集群可有多个broker,一 ...
- Kafka分区分配计算(分区器Partitions)
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
最新文章
- h5自定义相机界面_MIUI 12全新相机发布,多款相机图标进行重绘,可升级机型一览...
- (三)SSO之CAS框架单点退出,退出到CAS登录界面
- Linux 如何快速找到运行中的进程
- java面试 mysql分库分表_MySQL性能管理及架构设计(三):SQL查询优化、分库分表 - 完结篇...
- [翻译]Triggerless design.md
- linux结束进程_生人勿近之Linux里养僵尸
- Avalonia跨平台入门第十五篇之ListBox聊天窗口
- 【window】git安装教程
- 常用控件 winform
- LSTM公式详解推导
- 500内部privoxy错误_【热议】喝崂山啤酒中奖500听,却只能兑换500毫升?!
- 【投资策略】2022 年大类资产配置展望:稳中求进-中金公司
- C#中判断服务器图片是否存在
- Hibernate持久化对象的三种状态深入理解
- 4-2 数据模型的生成
- RFID将成为物联网革命的首战
- mysql-5.7安装、配置
- Blue Prism宣布融资1亿英镑,创始人兼首席执行官宣布离职
- MINIST数据集读取
- 树莓派+OpneVino环境搭建以及快速实现人脸识别