Java 操作 kudu--分区策略 | 学习笔记

简介: 快速学习 Java 操作 kudu--分区策略

开发者学堂课程【NoSQL 数据库 Kudu 教程Java 操作 kudu--分区策略学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/723/detail/12907


Java 操作 kudu--分区策略


内容介绍:

一、 kudu 分区方式

二、 Range Partitioning(范围分区)

三、multi partition(多级分区)

 

一、kudu 分区方式

kudu 当中表的分区方式,也称之为分区策略,所谓的分区方式指的是 kudu 当中一个表,最终会被划分成若干个叫做tablet 的,这样的数据单元,tablet 会存储在各个不同的 tablet server 上,所关心的是一个表当中有很多行记录,这些行是按照何种规则进行划分的,比如说有一张表099,作为的主键 ID,到底这100条数据是随机,还是按照某种规则,还是按照某种范围,这一个决定一行季度属于哪一个 tablet 就是所谓的分区规则方式的问题,分区指定的方式,是在建表的时候,通过表的 option 来设置的当下的 kudu 它支持三种分区的方式。

第一种,叫做 range partitioning 范围分区,所谓的 range 的根据存入插入的数据量,划定一个范围,比如说010,作为一个1020,2030,3040,这样可以把数据均衡平均地存储在各个不同的服务器上,避免出现一个负载不均衡的情况,这是一种规则。

第二种叫做 hash 分区,hash 本身是一个算法,指定某个字段或者某个力,然后,根据他的 hash 值对指定的个数进行取余取模运算,然后也可以分配到各个不同的分区当中,可以对的数据随机分散是有帮助的,还可以避免所谓的热点问题,剪辑的热点问题。

第三种方式,叫做多级分区 multilevel,就是在上面两个分区的基础上,做一个整合,既采用范围分区,又采用 hash分区,相当于在分区的基础上继续分区,择其两个优点,选择同时,尽量减少每个的缺点。

首先打开的 ID,通过之前的建表语句,在之前进行创建表的时候,在最终这里 option 当中去指定了根据 ID 采用hash 分区,做一个相关的验证,把这个表达中的逻辑全部给它复制过来,重新写一个新的方法,写一个 attest,叫做public void Test partition ,首先看第一个,先把这个代码给它粘贴过来,这里边的表也是方便重新创建一个新的表,第一个表叫做 T hash partition,事实上的 hash 分区,也是 kudu 当中默认的分区方式,接下来把它拿过来,这里报错应该是一个异常问题,选择他把异常给他抛一下,如果这个表不存在,创建这个表,上面的这些都不用动,指定表的 scheme 信息,哪些字段,哪些类型,创建 option 在这里,创建了一个表的 tab options,在无形当中,指定了所谓的字段,所以这里很重要,以下叫指定用于分区的字段,是以 ID 为例,指定好段之后再来看一下,要通过下面这个 API 把刚才的一个字段 partition list,以及分区的个数六设置到 options 当中,相当于最终每条记录 ID 都要进行hash kudu 的值,对六进行取模来进行分配,就可以得到一个新的一个表,

image.png

执行这个结果右键选择做一个 run 运行,等这里执行,这边出现绿色退出状态码为0,执行成功打开的浏览器,在这边做一个刷新,选择的 tables,这叫 T hash partition,点击表后面链接的来看一下,这后面就写了字段,重点看这个partition scheme,根据 ID hash 分到六个分区当中,这就是第一种。

image.png


二、Range Partitioning(范围分区)

接下来看一下第二个叫做范围 range 分区,比如现在再创立个表,叫做 t range partitionrange 就是首先想一下这个 range 一个范围,就自闭意味着有一个上下边界的问题,接下来做个演示,把这一段代码给注释掉,首先第一件事,要指定 range 分区的字段,第一步指定 range 分区的字段,要范围分区根据分区字段分区范围,用的叫做 table options,sight range parting club 是指定分区的字段,这个字段就是 parting list ,这是第一个,接下来看一下要指定分区的策略,指定分区的策略,首先给大家画一下,希望最终达到一个什么样的范围分析效果,0开始大于等于0ID,根据 ID 来分的,然后,小于10,这是一个 range 范围,比如说最终希望得到这样效果,然后从10到的20,这是一个,从2030,这是一个 range,然后从30到的40是一个 range,从40到最终的50号,进行 range 肯定会有上下边界的问题,先看一下 API,比如在这里,这里用的是 tableoption.add range,后面有两个选项,一个叫做lower,一个叫做 upper,只不过不是用 int 类型表示的,而是用这个 partitioning lower 一个类型来分装的,就是上下边界,先不设置它,接下来数据只能做个循环,比如下届是从0开始的,0,10,2030这里首先第一个变量 ink 叫做count, count 等于0首先从0开始,接下来,针对来做一个循环,比如这里从012345个分区,所以第一个变量 I=0,然后从0开始,i<=5,应该没有五个分区,012345个分区,然后下来干什么,i++,在这当中,后面继续写 i==i<5,i++首先是准备下届,上下届,方法应该发现它里面是叫做 partition lower,不是一个 int 类型,所以不能临时把这样往里面放 partition,从的 scheme 当中获得,scheme 的一个方法,叫做 new 一个 partition Row,可以获得下届的,比如首先来个 lower,下届,lower 怎么获取,lower.add Int,需要指定哪个字段,是根据 int 来进行划分的,当前 int 是不是把 count 起来可以了,count 0,是不是现在下届是0,接下来还要准备一个上届,在通过的 scheme new 一个 partial row 这就来个 apper ,这里面也需要去指定一下的 apper.addint,首先这个字段标出来还是 ID,这是下届是0,上届是10,怎么变成10,当届时的是0,所以这里可以做这么操作,那这个 count,做一个加时操作,加等于10经过这步操作之后,再把 count 拿过来说它变成10,因此第一次的时候他就是0,到10下来,它是10,然后变成20,这样就满足了需求了,接下来才把这一个给它放到这里面好,来看一下设置之后,里面需要一个叫做apper,应该是一个 lower,一个下届,然后一个 apper 上届,这样就完成了一个范围的一个指定,所以这里简单写两个注释,指定 range 的下届,指定 range 的上届,最终鉴别的效果叫做 T range partition ,表达 schema 信息一样没有区别,run 等他执行,首先报错了,报错叫做 unknown column int,不认识这个字段叫做 int,应该写 ID,性别的差别要注意,接下来再重新装运,叫 ID,不可以写个 int,这时候字形已经成功了,

image.png

已经绿色了下来,打开浏览器看一下,做一个刷新 tables 来看,多了一个 t range partition,点开这个表,是不是这种效果,分区规则是根据的 ID range 的一个划分,010的这一个范围,1020,2030,50,这样就做了一个划分,下来把数据做一个平均分配,这是第二种分区方式,叫做 range partition,第三种叫做多级分区,相当于是分区计算机一分区,比如说进行 range 区分,分为010作为一个分区了,010当中能不能根据 hash 再进行划分,也是可以的,分区记忆分区。

image.png


三、multi partition(多级分区)

创建第三个表叫做 t multi partition,这个表名也写一下,在参加表的时候,只要注意,把上面这个表这个 hash,打开之后,把它设为三个,根据的 ID,既有的 hash 又有的 range,根据 hash ID 分为三个部分,然后根据 range 分为这几个范围,直接来右键 run 运行再去看一下结果,找一个运行结束,回到浏览器做一个刷新,有了 multi partition,点开大家发现,首先看这个 scheme 信息 hash ID,根据 ID 分为三个部分,然后 Range 的范围是0到10一样,这种猜想 hash 是分为三个,range 是分为五个,0到10,1个,到底最后几个,来看最后结果 count 是最终的分析结果是15个,你能猜出来为什么15个,首先把数据根据这个 range 分为这么几个部分,1、2、3、4、5,5个部分,每个部分当中再根据 hash 再划分为三个部分,所以说最终是每个当中分为三个部分,所以这种方式,叫做多重分区,多个分区,相当于结合了两个分区的优点,在实际过程当中,可以结合具体场景来进行选择,默认情况下叫做 hash,根据你指定的字段 hash kudu 值模除与分区的个数把数据做一个分配,这就是 kudu 当中分区的一个概念,决定了一条记录属于哪一个 tablet。

image.png

相关文章
|
3月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
3月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
5月前
|
存储 Java 大数据
Java 大视界 -- Java 大数据在智能家居能源消耗模式分析与节能策略制定中的应用(198)
简介:本文探讨Java大数据技术在智能家居能源消耗分析与节能策略中的应用。通过数据采集、存储与智能分析,构建能耗模型,挖掘用电模式,制定设备调度策略,实现节能目标。结合实际案例,展示Java大数据在智能家居节能中的关键作用。
|
5月前
|
存储 数据采集 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵溯源与治理策略展示中的应用(191)
本项目探索了基于Java的大数据可视化技术在城市交通拥堵溯源与治理策略中的应用。通过整合多源交通数据,利用Java生态中的大数据处理与可视化工具,构建了交通拥堵分析模型,并实现了拥堵成因的直观展示与治理效果的可视化评估。该方案为城市交通管理提供了科学、高效的决策支持,助力智慧城市建设。
|
5月前
|
存储 分布式计算 Java
Java 大视界 -- Java 大数据在智能建筑能耗监测与节能策略制定中的应用(182)
本文探讨了Java大数据技术在智能建筑能耗监测与节能策略制定中的关键应用。通过Hadoop、Spark等技术实现能耗数据的存储、分析与可视化,结合实际案例,展示了Java大数据如何助力建筑行业实现节能减排目标。
|
6月前
|
机器学习/深度学习 分布式计算 供应链
Java 大视界 ——Java 大数据在智能供应链库存优化与成本控制中的应用策略(172)
本文围绕 Java 大数据在智能供应链库存优化与成本控制中的应用展开,剖析库存管理现状与挑战,阐述大数据技术应用策略,结合真实案例与代码给出实操方案,助力企业提升库存管理效能,降低运营成本。
|
6月前
|
Java 测试技术 API
现代化 java 分层开发实施策略与最佳实践指南
现代化Java分层开发采用清晰的多层架构,包括Controller、Service、Repository和DTO等核心层次。文章详细介绍了标准Maven/Gradle项目结构,各层职责与实现规范:实体层使用JPA注解,DTO层隔离数据传输,Repository继承JpaRepository,Service层处理业务逻辑,Controller层处理HTTP请求。推荐使用Spring Boot、Lombok、MapStruct等技术栈,并强调了单元测试和集成测试的重要性。这种分层设计提高了代码的可维护性、可测试
279 0
|
6月前
|
Java API 微服务
2025 年 Java 从入门到精通学习笔记全新版
《Java学习笔记:从入门到精通(2025更新版)》是一本全面覆盖Java开发核心技能的指南,适合零基础到高级开发者。内容包括Java基础(如开发环境配置、核心语法增强)、面向对象编程(密封类、接口增强)、进阶技术(虚拟线程、结构化并发、向量API)、实用类库与框架(HTTP客户端、Spring Boot)、微服务与云原生(容器化、Kubernetes)、响应式编程(Reactor、WebFlux)、函数式编程(Stream API)、测试技术(JUnit 5、Mockito)、数据持久化(JPA、R2DBC)以及实战项目(Todo应用)。
391 5
|
6月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
280 1
|
9月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
191 13