聚美优品的网站建设状况,wordpress 关闭警告,注册公司代理记账费用,网站背景进入正文前#xff0c;感谢宝子们订阅专题、点赞、评论、收藏#xff01;关注IT贫道#xff0c;获取高质量博客内容#xff01; #x1f3e1;个人主页#xff1a;含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 #x1f4cc;订阅…
进入正文前感谢宝子们订阅专题、点赞、评论、收藏关注IT贫道获取高质量博客内容 个人主页含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 订阅拥抱独家专题你的订阅将点燃我的创作热情 点赞赞同优秀创作你的点赞是对我创作最大的认可 ⭐️ 收藏收藏原创博文让我们一起打造IT界的荣耀与辉煌 ✏️评论留下心声墨迹你的评论将是我努力改进的方向 博主个人B栈地址豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录
1. 分布式表插入数据
2. 分片规则
3. 删除分布式表 Distributed引擎和Merge引擎类似本身不存放数据,功能是在不同的server上把多张相同结构的物理表合并为一张逻辑表。
Distributed分布式引擎语法
Distributed(cluster_name, database_name, table_name[, sharding_key])
对以上语法解释
cluster_name集群名称与集群配置文件metrika.xml中的自定义名称相对应。database_name数据库名称。table_name表名称。sharding_key可选的用于分片的key值在数据写入的过程中分布式表会依据分片key的规则将数据分布到各个节点的本地表。
注意创建分布式表是读时检查的机制也就是说对创建分布式表和本地表的顺序并没有强制要求。
我们在clickhouse集群中各个节点上创建好了本地表person_socre,每个节点上也有不同的数据我们需要创建分布式表来映射当前表所有数据方便查询数据结果如下图所示 从实体表层面上来看一张分片表由两部分组成
本地表通常以_local为后缀进行命名。本地表是承接数据的载体可以使用非Distributed的任意表引擎一张本地表对应了一个数据分片。分布式表通常以_all为后缀进行命名分布式表只能使用Distribute表引擎它与本地表形成一对多的映射关系日后将通过分布式表代理操作多张本地表。
创建person_score_all分布式表
Create table person_score_all on cluster clickhouse_cluster_3shards_1replicas (id UInt32,name String,age UInt32,gender String,score Decimal(9,2))engine Distributed(clickhouse_cluster_3shards_1replicas,default,person_score,id);
任意一台clickhouse节点查询分布式表person_score_all中的数据
select * from person_score_all; 有了分布式表之后我们就可以向分布式表中插入数据那么分布式表会根据配置的sharding_key将数据写入到不同的节点分片中。
1. 分布式表插入数据
在任意节点向分布式表person_score_all中插入数据
insert into person_score_all values (7,a1,30,f,1000),(8,a2,31,f,1001),(9,a3,32,f,1002),(10,a4,33,f,1003),(11,a5,34,f,1004),(12,a6,35,f,1005);
任意节点查询对应的person_score_all表
select * from person_score_all; #可以针对每张本地表进行optimize 合并数据不能针对分布式表进行合并
#在node1上执行如下命令
node1 :) optimize table person_score;#在node2上执行如下命令
node1 :) optimize table person_score;#在node3上执行如下命令
node1 :) optimize table person_score;#最终查询分布式表person_score_all 2. 分片规则
分片键sharding_key要求返回一个整形类型的取值包括Int系列和UInt系列分片键sharding_key可以使如下几种情况
可以是一个具体的整形列字段
Distributed(cluster,database,table,userid)
可以按照随机数划分
Distributed(cluster,database,table,rand())
可以按照某个整形列进行散列值划分
Distributed(cluster,database,table,intHash64(userid)) 注意如果不声明分片键那么分布式表只能包含一个分片这意味着只能映射一张本地表否则在写入数据时将会报错。如果分布式表只包含一个分片也就失去了分布式的意义所以虽然分片键是选填参数但是通常都会按照业务规则进行设置。
3. 删除分布式表
删除分布式表person_score_all任意clickhouse节点直接执行如下命令
drop table person_score_all on cluster clickhouse_cluster_3shards_1replicas; 如需博文中的资料请私信博主。