ClickHouse进阶(六):副本与分片-2-Distributed引擎

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注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])

对以上语法解释:

  1. cluster_name:集群名称,与集群配置文件metrika.xml中的自定义名称相对应。
  2. database_name:数据库名称。
  3. table_name:表名称。
  4. sharding_key:可选的,用于分片的key值,在数据写入的过程中,分布式表会依据分片key的规则,将数据分布到各个节点的本地表。

注意:创建分布式表是读时检查的机制,也就是说对创建分布式表和本地表的顺序并没有强制要求。

我们在clickhouse集群中各个节点上创建好了本地表person_socre,每个节点上也有不同的数据,我们需要创建分布式表来映射当前表所有数据,方便查询数据结果,如下图所示:

从实体表层面上来看,一张分片表由两部分组成:

  1. 本地表:通常以_local为后缀进行命名。本地表是承接数据的载体,可以使用非Distributed的任意表引擎,一张本地表对应了一个数据分片。
  2. 分布式表:通常以_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;

👨‍💻如需博文中的资料请私信博主。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/115967.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用SQL系列 之 了解SQL中的约束规则

简介 在设计数据库时,有时可能需要对某些列中允许的数据设置限制。例如,如果你要创建一张表来保存摩天大楼的信息,你可能希望在保存每座大楼高度的列中禁止使用负值。 关系型数据库管理系统(RDBMS)允许你使用约束来控制哪些数据被添加到表中…

Spring Boot源码解读与原理剖析:深入探索Java开发的奥秘!

评论区留言赠书15本 关注点赞评论,评论区回复“Spring Boot源码解读与原理剖析:深入探索Java开发的奥秘!” 每篇最多评论3条!!采用抽奖助手自动拉取评论区有效评论送书两本, 开奖时间:9月11号 承…

MySQL数据库——多表查询(3)-自连接、联合查询、子查询

目录 自连接 查询语法 自连接演示 联合查询 查询语法 子查询 介绍 标量子查询 列子查询 行子查询 表子查询 自连接 通过前面的学习,我们对于连接已经有了一定的理解。而自连接,通俗地去理解就是自己连接自己,即一张表查询多次。…

二进制数的位运算(非和异或)invert()和bitwise_xor()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 二进制数的位运算(非和异或) invert()和bitwise_xor() [太阳]选择题 下列代码最后一次输出的结果是? import numpy as np a, b 3, 10 print("【执行】np.binary_repr(a, 4)…

vue3+ts组件通信

1、父组件向组件传参 父组件代码 子组件代码 2、子组件向父组件传参 组件间代码 父组件代码 3、如果eslint报错,需在.eslintrc.js中添加一行代码 4、通过父组件通过 ref 获取子组件的属性或者方法 父组件代码 子组件代码 5、孙子组件provide和inject 父组件…

再也不信能用99年的IDEA激活方式了

今天给大家安利一款IDEA伴侣神器 Toolbox,开发必备的IDEA大家都在用,但很多小伙伴没用过Toolbox。 介绍 为什么使用 JetBrains Toolbox? 包含超过 15 款可用于专业开发的工具。 每个工具专门针对其技术开发。 所有工具都会定期更新&#…

python 笔记(3)——request、爬虫、socket、多线程

目录 1、使用requests发送http请求 1-1)发送get请求 1-2)发送 post 请求 1-3)发送 get 请求下载网络图片 1-4)使用 post 上传文件 1-5)自动维护 session 的方式 2、使用 os.popen 执行cmd命令 3、基于 beautif…

卷积神经网络实现运动鞋识别 - P5

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:Pytorch实战 | 第P5周:运动鞋识别🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 目录…

沐风老师3DMAX厨房橱柜生成器KitchenCabinetGenerator教程

3DMAX厨房橱柜生成器插件使用方法 3DMAX橱柜生成器KitchenCabinetGenerator是一个在3dMax中自动创建三维橱柜模型的高效脚本。它有多种风格的台面、门和橱柜,可以灵活地应用于Archviz项目,同时为3D艺术家节省大量时间。 【适用版本】 1.3dMax2018 – 20…

YOLO数据集划分(训练集、验证集、测试集)

1.将训练集、验证集、测试集按照7:2:1随机划分 1.项目准备 1.在项目下新建一个py文件,名字就叫做splitDataset1.py 2.将自己需要划分的原数据集就放在项目文件夹下面 以我的为例,我的原数据集名字叫做hatDataXml 里面的JPEGImages装的是图片 Annota…

设计模式-适配器

文章目录 一、简介二、适配器模式基础1. 适配器模式定义与分类2. 适配器模式的作用与优势3.UML图 三、适配器模式实现方式1. 类适配器模式2. 对象适配器模式3.类适配器模式和对象适配器模式对比 四、适配器模式应用场景1. 继承与接口的适配2. 跨平台适配 五、适配器模式与其他设…

C++之std::distance应用实例(一百八十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

论文解读 | 三维点云深度学习的综述

原创 | 文 BFT机器人 KITTI 是作为基准测试是自动驾驶中最具影响力的数据集之一,在学术界和工业界都被广泛使用。现有的三维对象检测器存在着两个限制。第一是现有方法的远程检测能力相对较差。其次,如何充分利用图像中的纹理信息仍然是一个开放性的问题…

uniapp授权小程序隐私弹窗效果demo(整理)

9月15号前要配置这句话 "__usePrivacyCheck__": true,官方“小程序隐私协议开发指南”文档 <template> <view class"dealBox"><view class"txtBox padding10"><!-- 查看协议 -->在您使用施工现场五星计划小程序之前&am…

解决D盘的类型不是基本,而是动态的问题

一、正确的图片 1.1图片 1.2本人遇到的问题 二、将动态磁盘 转为基本盘 2.1 基本概念&#xff0c;动态无法转化为基本&#xff0c;不是双向的&#xff0c;借助软件 网址&#xff1a;转换动态磁盘到普通磁盘_检测到计算机本地磁盘为动态分区_卫水金波的博客-CSDN博客 2.2分区…

我开课了!《机器学习》公益课9月4日开课

我是黄海广&#xff0c;大学老师&#xff0c;我上的一门课叫《机器学习》&#xff0c;本科生学机器学习有点难&#xff0c;但也不是没有可能&#xff0c;我在摸索中&#xff0c;设计适合本科生的机器学习课程&#xff0c;写了教材&#xff0c;录了视频&#xff0c;做了课件。我…

安装使用electron

一、安装node和npm 运行cmd查看是否安装及版本号 npm -v node -v 二、安装electron npm直接安装会报错缺少什么文件&#xff0c;使用cnpm进行安装 直接安装cnmp后&#xff0c;再用cnmp命令安装可能会报错Error: Cannot find module ‘node:util’ 原因是npm版本与cnpm版本…

MySQL官网下载安装包

MySQL官网&#xff1a; MySQL MySQL 8.0官网下载地址&#xff1a; MySQL :: Download MySQL Community Server 2023-07-18 MySQL 8.1.0 发布&#xff0c;这是 MySQL 变更发版模型后的第一个创新版本 (Innovation Release) 。 如果在官网中找不到下载位置&#xff0c;点击第二个…

在Visual Studio 2017上配置并使用OpenGL

1 在Visual Studio 2017上配置并使用OpenGL 在GLUT - The OpenGL Utility Toolkit&#xff1a;GLUT - The OpenGL Utility Toolkit中点击“GLUT for Microsoft Windows 95 & NT users”&#xff0c;选择“If you want just the GLUT header file, the .LIB, and .DLL file…

elementplus实现左侧菜单栏收缩与展开

1.页面结构 Home.vue下包含aside.vue和menu.vue 2.TAside.vue el-menu左侧菜单栏显示 注意&#xff1a; 要使用收缩与展开&#xff0c;el-aside必须设置width"collapse"&#xff0c;否则收缩展开会出现收缩后&#xff0c;el-aside宽度不变窄需要使用动态改变展开收…