开发者学堂课程【NoSQL 数据库 Kudu 教程:Java 操作 kudu-创建表操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/723/detail/12904
Java 操作 kudu-创建表操作
现在了解下 java 操作 kudu 当中创建表的操作,先不了解 api 要想去创建一个 kudu 表需要指定清楚这个表叫什么名字,kudu table name 是需要的,第二个这个表当中有哪些字段,字段有哪些类型,这些称之为叫做 scheme ,第三个这个表有没有一些相关的属性信息,比如在 kudu 当中,一个 table 会被划分成多个 table t,是按照区域划分的,还是按照 hash 划分的,这些属性要不要指定,大概就这么三块,那之前已经构建好了一个叫做 table client 的一个对象,它里面直接调一个方法,Create table,把刚才所要的相关数据信息传递给他就可以构建出来,一个表,要注意它里面需要的这个表名,Scheme 信息,数据信息到底是通过什么样的数据结构传递进来的,是类还是 string,通过这样书写整个 API 就非常清晰了,所以说打开的编辑器,来进行相关的测试编写,
首先来编写一个注解叫做 test 检测应力,方法叫做 public 返回词,叫做 create table,在这一个方法当中,首先就开始去创建表,但是如果为了更加专业通常会做一个判断,如果这个张三同学在你操作之前已经创建好了,这时候你再去创建表,是不是直接就报错,所以在操作之前做一个相关的检测,判断表是否存在,如果存在就不操作,如果不存在,就去创建,它里面提供了一个方法叫做 table exist,所以说接下来第一个方法叫做判断表是否存在,用 if 方法拿到之前创建的 kudu client 掉一个叫做 table exists a PR,就是刚才说的叫做 kudu table,这个表是刚才指定的叫做student 表,如果这个表不存在,前面加一个感叹号,如果不存在,这里首先这里应该需要一个异常给他抛出来,点击前面的这个红色的箭头,
选择它出来,好接下来再写注释如果表不存在,进行创建表的操作,创建表的操作现在可以大胆的想一下,你最终创建表肯定是通过 client 去调查的 API,打开一个表,Alert out 修改这个表还有 delete 删除一个表,因此你发现后续其他方法上改善都是通过这个 client 相关开始,只不过属性字段需要这个记住,这里去 create table 创建一个表,创建表过程中按一下 ctrl 键,点开这个 create table。
发现它里面有几个属性需要传递,第一个,表叫什么名字,第二个,你表有哪些字段,字段哪些类型 scheme,所以说这里 scheme 是一个对象,等下就有个 scheme 就可以了。第三个,创建这个表有哪些属性,Obsess 有没有属性,需要指定,没有就算了,有的话给指定清楚一下。这些指定完成之后,注意这个里面它还是一个 build,就可以具体细看里面 API 分装了,但是这个属性应该比较清楚,所以说创建表的操作,这个表有三个属性,表名、表的 scheme 信息,还有表属性信息,
接下来,首先第一个 table name 是一个 string,叫 kudu table,所以这个很容易。直接来个 kudu table 搞定一个,接下来 scheme 看下面提示,Scheme 需要的是一个对象,所以接下来写注释叫做指定表的 scheme 信息,需要的是一个 scheme,new 一个 Scheme 对象,new 的时候,需注意点进去按一下 ctrl 键点这个 steam 类,发现当中一个表有哪些字段,可能多个字段有哪些类型,可以看到这里它里面放的是一个历史的集合,里面叫做 column scheme,就是字段的 scheme 信息,把这个表有多少个字段都放在一个集合当中,把这个集合放给这个 scheme 对象,需要一个历史的 club,很就创建一个这样的集合。这就是学习用别人的 API 需要指定什么,
首先,去 new 一个 arraylist,里面放上的 column scheme,做一个导包的操作,后面,ctrl 的价位返回叫做 column scheme,接下来的添加字段的 scheme 信息,拿到这个集合,往里面添加,注意它里面放的每个字段,都是 column scheme 这样的对象,而不是一个基本类型,所以看到这个对象下来不用说就去 new 一个 column scheme,需注意最终调的是它里面的 build,还是一个内部类,这里面大量的使用内部类。调它这个 scheme 当中的 build 里面有个build 方法,所以选择第二个。在调这个 build 方法当中,里面最终里面需要指定相关的一些信息,哪些信息,哪个资料叫什么名字,什么类型的得告诉,The string double float,比方说 name,一个学生表需要一个 ID,ID 类型是 int类型,所以选择 tab 注意它这里是一个悲剧,tab 的32,接下来还要注意,在kudu当中,说过表需要有指定一个字段,必须有个字段为主键,叫 primer t,这个是数据的唯一,通过组建能找到数据,在使用当中,以 ID 作为主键最合适,组建的方法叫做t方法,一个错儿复试是不是需要组件,传递执行完之后,
最后调这个方法,build 的方法大家看,这样就添加好了第一个字段,添加好之后,还有其他的实验信息,把这个复制一下,就简单的写几个,比如说有 ID,name,名字不需要用他了,让他们看一下还有尺寸,name,age,sex 性别,其他的自然 ID 为主键,这里面这个组件开启就不需要了,可以把这里面全部删除,在选择注释这样写完了,设置客服信息,其中写个注释,指定 ID 为表的组件,可以看到 aps 是非常的 sp 没有需要编写,把字段添加到这个集合当中,接下来把这个集合传给这个 scheme 对象的构造函数,new 一下它返回一个得到一个 schema,之后 schema 发给他,还有了第二个属性,第三个,还需要 create table options,这个 table options,就是需要去指定表的相关属性,比如刚才讲过的就是分区,这时候,还需要 options,给它创建一个 options,回到这里必须指定指定表的 Option 属性,它这里刚才看它的 API 点进去,它需要一个叫做 create table option,new create options 的加V。这里有一个 table option,table option 到里面添加什么,Option 可以单点一点add,它里面加了一些数据信息,比如设置一个表副本备份数,Number replace,默认是三级修改为其他数,重要的就是这两个分区的方式,一个表分成 table 的,比如说这个表有100行,按照 range 来区分,比如从一到50,然后51到100,还是按照 hash 需要在这里指定,比如首先来一个根据 hash 区分的时候,会需要指定一个分区的字段,但是这个字段并不是一个字段,而是放在一个集合当中的, hash 分为几个部分,后面要指定一个数 bucked,所以说来 addhashpartitions 需要的一个集合里面放的是虚拟类型,所以 New 一个 array list,里面放的是 string,这个尺寸里面是指定分区的字段,alt 加 V,这个叫做 partition型,Partition list,在通过这个 partition 型 list 的点 add,要根据 ID 来进行相关的分区,把这个 ID 添加进去,添加好之后再把这一个 partition list 指定给它,然后,再来一个分区个数,比如说分区为五个分区为六个,这里 hash,讲解下分区的规则,达到 ID 取它的 hashcode 值,然后,对这个指定的这个数进行了取余操作,余数为几又到哪里去,有了这个 table options,再把它给它,这样就得到最终创建表格了,你发现大概就这个逻辑,所以简单指定一下,可以写一下指定表的分区规则,采用 hash 分区根据 IDhash 到指定的六个部分都这样就完成了表的一个相关的创建操作,
接下来来做一个相关的执行看一下,当前通过的 kudu 集群,你发现当中现在是没有表的,咨询他能不能创建这个表,点击这个 great table 右键,选择 run 运行,出现了的绿色执行成功状态码为零,成功之后,
就可以在的页面上做一个刷新查看,点击 tab 或者重新刷新一下,这里就多了一个新的表叫做 student,下面有这个表的一个唯一的 ID,点进去可以看一下,来看这个表的相关信息就出来了,这个表字段有这么几个,ID、 name 、age 、six,然后,什么类型的,有这个分区的信息,
是根据 IDhash 分区到六个部分当中,所以说分区规则根据 ID 来分的,下面提供了一个落创建表的语法说,如果你后续想通过 impala 使用的 kudu 集合,可以通过这个语句创建一个外部表,名字叫 student 的,把存储类型为 kudu 指定kudu 的信息,这就完成了所谓的建表操作。虽然写的代码很多,但大量都是它分的比较死的 API。需要做就是考虑清楚创建一个表到底需要什么东西。需要一个表明,需要 scheme 字段类型和数信息需要一个表的属性的这些参数就可以满足于创建一个表。