既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
一个Tablet是一张表的一个连续片段,Tablet是表的水平分区,Tablet之间的Primary Key范围不会重叠,一张表的所有Tablet片段构成了这张表的所有Primary Key范围。Tablet会冗余存储在多个Tablet Server上设置副本,任何时刻只有一个Tablet Server是Leader,其他都是Follower。
三、特性
====
1.重要性
1.大数据分析的复杂性往往是存储系统的局限性带来的,Kudu 的局限性小很多,一定程度使大数据分析变得简单。
2.新的应用场景需要 Kudu,例如越来越多的应用集中在机器生成的数据和实时分析领域。
3.适配新的硬件环境,从而带来更高的性能和应用灵活性。
2.易用性
1.提供了更接近于 RDBMS 的功能和数据模型;
2.提供类似 RDBMS 的库表存储结构;
3.允许用户以和 RDBMS 相同的方式插入、更新和删除数据。
3.优势
Kudu 同时具备了逐行插入、低延迟随机访问、更新和快速分析扫描的能力,使得它在 OLAP 和 OLTP 中都能提供较好的支持,这些原本需要多个存储系统同时支持的复杂架构被替换成只有一个存储系统,所有的数据被存放在这个存储系统里,极大地简化了大数据的架构。
4.与传统关系型数据库比较
1.跟关系型数据库一样,Kudu 表有一个唯一的主键。
2.关系型数据库中常见的特性,比如事务、外键和非主键索引,目前在Kudu中是不支持的。
3.Kudu拥有一些OLAP和OLTP特性,但是缺少对跨行的原子性、一致性、隔离性、持久性事务的支持。
4.Kudu可被归为混合食物/分析处理(Hybrid Transaction/Analytic Processing,HTAP)类型数据库。
5.Kudu支持快速主键检索,并能在数据持续输入的同时进行分析,而 OLAP 数据库在这种场景下性能通常不是很好。
6.Kudu的持久性保证和 OLTP 数据库更为接近。
7.Kudu的Quorum 能力可以实现一种名为Fractured Mirrors的机制,即一个或两个节点使用行存储,另外的节点使用列存储。这样就可以在行存储的节点上执行OLTP类型的查询,在列存储的节点上执行OLAP查询,混合两种负载。
5.与其他大数据组件比较
1.HDFS擅长大规模扫描,但不擅长随机读,严格来说,并不支持随机写,可以通过合并的方式模拟随机写,但成本很高。
2.HBase和Cassandra擅长随机访问,随机读取和修改数据,但大规模扫描性能较差。
3.Kudu的目标是把扫描性能做到HDFS的两倍,而随机读性能接 HBase和Cassandra,实际目标是在SSD上随机读/写的延迟在1ms以内。
四、常用语句
======
1.建表
Kudu建表是需要主键的,主键不能为空。
1.建普通表
create table test.test1 (
date_timekey string not null,
username string null,
product_qty string null
)
stored as kudu
2.建分区表
create table test.test1 (
date_timekey string not null,
username string null,
product_qty string null,
primary key (date_timekey)
)
partition by range (date_timekey) (value=‘20220417’)
stored as kudu
2.删除表
drop table if exists test.test1;
3.查询数据
注意:查询数据的时候,最好是把要查询的列带上,这样可以减少查询的列,减轻查询的Loading。在写SQL的时候,使用指定的列对大数据集群压力更小,系统健壮性更加强。
select date_timekey,username from test.test1
4.添加数据
注意:分区表插入数据之前,一定要先建好分区。
insert into test.test1 (date_timekey,username)values(‘20200330’,‘shuijianshiqing’);
注意:添加的数据主键不能为空,否则数据进去不。
insert into test.test1 (date_timekey,b)values(null,‘shuijianshiqing’);
5.更新数据
upsert into test.test1 (date_timekey,username)values(‘20200330’,‘shuijianshiqing’);
6.删除数据
注意:删除数据时候,不能使用别名删除,比如test.test t,然后条件里面是t.date_timekey,这样数据删除不了。
delete from test.test1 where date_timekey=‘20200328’;
7.新增单个分区
alter table test.test1 add range partition value=‘20200325’;
8.删除单个分区
alter table test.test1 drop range partition value=‘20200325’;
9.新增多个分区
alter table test.test1 add range partition ‘20200327’<=values<‘20200331’;
10.删除多个分区
alter table test.test1 drop range partition ‘20200327’<=values<‘20200331’;
11.新增列
alter table test.test1 add columns(column_new string);
12.删除列
alter table test.test1 drop column column_new;
13.修改列名
username是列的原来的名称,username_new是新列的名称,
alter table test.test1 change column username username_new string;
14.分区为多列
1.新建表
drop table if exists test.test2;
create table test.test2 (
id String not null,
date_timekey String not null,
hour_timekey String not null,
username STRING,
password STRING,
interface_time String,
primary key (id,date_timekey,hour_timekey)
)
partition by range (date_timekey,hour_timekey) (partition value=(‘20200601’,‘20200601 0730’))
stored as kudu
2.新增分区
alter table test.test2_kudu add range partition value=(‘20200601’,‘20200601 0830’);
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
2.新增分区
alter table test.test2_kudu add range partition value=(‘20200601’,‘20200601 0830’);
[外链图片转存中…(img-tp4nf0pB-1715136013803)]
[外链图片转存中…(img-bdbQB39M-1715136013804)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!