OLAP系列:四、clickhouse分布式表使用指南

news2024/11/24 17:30:28

一、背景

ClickHouse中最强大的表引擎当属MergeTree(合并树)引擎及该系列(*MergeTree)中的其他引擎,支持索引和分区,地位可以相当于innodb之于Mysql。 而且基于MergeTree,还衍生出了很多小弟,也是非常有特色的引擎。

本篇简单介绍基于MergeTree引擎建表以及分布式表的使用,更多基础概念和知识点请关注官网文档介绍。

二、分布式表实践

1、前序准备

请参考系列-上篇文章关于集群部署的说明。

2、查询集群信息

SELECT * FROM system.clusters;

3、创建数据库

CREATE DATABASE IF NOT EXISTS db_crm_sh 
ON CLUSTER clickhouse_cluster_3shards_1replicas;

4、创建本地表

/****************
【选一个节点】创建好本地表后,在1个节点创建,会在其他节点都存在。
clickhouse_cluster_3shards_1replicas 集群名字 
****************/
create table IF NOT EXISTS db_crm_sh.T_C_BAL_FUND_LOCAL 
ON CLUSTER clickhouse_cluster_3shards_1replicas
(
  cust_no       String,
  fund_acco_no  String,
  agency_no     String,
  fund_code     String,
  share_type    String,
  last_shares   Decimal(16,2),
  f_netvalue    String,
  fdate         String,
  last_asset    Decimal(16,2),
  ta_no         String,
  cust_type     String,
  trade_acco_no String,
  version       Int
) ENGINE = MergeTree()
ORDER BY cust_no
PARTITION BY version
;

5、创建分布式表

分布式表实际上是一个视图,因此它需要与分片(服务器节点)具有相同的表结构定义。创建视图后,将在每个分片(服务器节点)上查询数据,并将结果聚合到最初调用查询的节点上。

/***************
【选一个节点】创建分布式表名 T_C_BAL_FUND,在1个节点创建,会在其他节点都存在。
clickhouse_cluster_3shards_1replicas集群名
db_crm_sh数据库名
T_C_BAL_FUND_SH表名
***************/
CREATE TABLE IF NOT EXISTS db_crm_sh.T_C_BAL_FUND 
ON CLUSTER clickhouse_cluster_3shards_1replicas 
as db_crm_sh.T_C_BAL_FUND_LOCAL 
ENGINE = Distributed(clickhouse_cluster_3shards_1replicas,
db_crm_sh,
T_C_BAL_FUND_LOCAL,
hiveHash(cust_no));

6、插入数据(操作分布式表)

/******************
【插入数据到分布式表 会根据策略存储在不同节点的本地表中】
******************/
INSERT INTO db_crm_sh.T_C_BAL_FUND 
(cust_no, fund_acco_no, version) 
VALUES 
('000001','000001', 6), 
('000002','000002', 6), 
('000003','000003', 6);

7、查询分布式表(合并各节点数据)

/***************
【任意节点查询-分布式,全部数据】
***************/
select * from db_crm_sh.T_C_BAL_FUND t;

8、查询节点本地表(只查询本节点存储数据)

select * from db_crm_sh.T_C_BAL_FUND_LOCAL tcbfl;

9、删除分布式表(本地表数据不会被删除)

drop table IF EXISTS db_crm_sh.T_C_BAL_FUND 
ON CLUSTER clickhouse_cluster_3shards_1replicas;

10、删除本地表(需要标明集群)

drop table IF EXISTS db_crm_sh.T_C_BAL_FUND_LOCAL 
ON CLUSTER clickhouse_cluster_3shards_1replicas;

11、批量删除表数据(操作本地表指定集群)

alter table db_crm_sh.T_C_BAL_FUND_LOCAL 
ON CLUSTER clickhouse_cluster_3shards_1replicas 
delete where version <= 8;

12、修改数据(操作本地表,OLAP数据库尽量避免使用)

想要更新分布式表的数据时,可以通过更新本地表的数据来完成。不过在更新本地表的数据时,必须指定 on cluster xxx。否则只会在其中一个节点中进行操作。另外,不能直接更新分布式表。

alter table db_crm_sh.T_C_BAL_FUND_LOCAL 
ON CLUSTER clickhouse_cluster_3shards_1replicas 
update fund_acco_no = '000022' where cust_no = '000002';

13、修改本地表名(存在问题:集群其他节点数据未被修改)

rename table db_crm_sh.T_C_BAL_FUND_LOCAL
to db_crm_sh.T_C_BAL_FUND_LOCAL1;

三、补充说明

1、抛砖引玉

本章主要介绍了分布式表的基本操作,读者可以结合实际的业务使用场景探索适合自己项目的使用模式。

2、MergeTree的扩展

MergeTree存在一系列扩展引擎,比如ReplacingMergeTree、SummingMergeTree等,读者可以参考官方说明尝试使用。

参考文档

ClickHouse实战--使用分布式表_clickhouse 分布式表_一 铭的博客-CSDN博客

表引擎 | ClickHouse Docs

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【量化分析】绘制指标线EWM和MACD(1)

目录 一、说明 二、使用mplfinance的前提 2.1 mplfinance生态圈 2.1 安装mplfinance 三、mplfinance绘图 3.1 单变量图 3.2 将用户自己生成的曲线添加到 mplfinance plot() 四、显示EWM和MACD 一、说明 在做量化分析的时候&#xff0c;需要有能力计算种种曲线&#xff…

ShowMeBug 持续升级,提供高信效度支撑的技术招聘方案

去年年底&#xff0c;全新升级版的 ShowMeBug ——一款支持实战编程的技术能力评估平台&#xff0c;首次揭开了它神秘的面纱。 而近日&#xff0c;ShowMeBug 再次迎来一系列产品更新&#xff0c;它将以全新的面貌&#xff0c;提供高信效度支撑的技术招聘方案&#xff0c;持续助…

chatgpt赋能python:Python人脸登录:这项技术将颠覆传统的登录方式

Python人脸登录&#xff1a;这项技术将颠覆传统的登录方式 简介 在互联网时代&#xff0c;登录是每个人使用网站或软件的第一步&#xff0c;但是传统的用户名和密码登录已经不能满足用户的需求。不断的爆出各种账户泄露事件、密码猜测和密码被盗等问题&#xff0c;导致用户的…

cleanmymac要不要下载装机?好不好用

当我们收到一台崭新的mac电脑&#xff0c;第一步肯定是找到一款帮助我们管理电脑运行的“电脑管家”&#xff0c;监控内存运行、智能清理系统垃圾、清理Mac大文件旧文件、消除恶意软件、快速卸载更新软件、隐私保护、监控系统运行状况等。基本在上mac电脑防护一款CleanMyMac就够…

生成程序片段(程序依赖图PDG)

生成程序片段(程序依赖图PDG) 生成程序片段 标准方法是&#xff1a; 基于依赖性分析的切片。 使用程序依赖图表示依赖。 从中生成切片。 我们将专注于这种方法。但是&#xff0c;还有其他选择。 程序依赖图 The Program Dependence Graph (PDG) 表示数据和控制依赖项&#xf…

Servlet的常用Api—HttpServletResponse

Servlet的常用Api—HttpServletResponse &#x1f50e;核心方法setContentType && setCharacterEncodingsendRedirect关于Keep-Alive关于状态码 && Body &#x1f50e;结尾 &#x1f50e;核心方法 方法描述(void) setStatus(int sc)为该响应设置状态码(void) s…

2023年4月和5月随笔

1. 回头看 为了不耽误学系列更新&#xff0c;4月随笔合并到5月。 日更坚持了151天&#xff0c;精读完《SQL进阶教程》&#xff0c;学系统集成项目管理工程师&#xff08;中项&#xff09;系列更新完成。 4月和5月两月码字114991字&#xff0c;日均码字数1885字&#xff0c;累…

python的AutoGui库(1)获取鼠标实时位置

1.安装AutoGui库,与库的导入 PyAutoGUI是一个纯Python的GUI自动化工具&#xff0c;其目的是可以用程序自动控制鼠标和键盘操作&#xff0c;多平台支持&#xff08;Windows&#xff0c;OS X&#xff0c;Linux&#xff09;。可以用pip安装&#xff0c;Github上有源码。 使用命令…

Ceph应用

//存储类型 块存储 一对一&#xff0c;只能被一个主机挂载使用&#xff0c;数据以块为单位进行存储&#xff0c;典型代表: 硬盘 文件存储 一对多&#xff0c;能被多个主机同时挂载使用&#xff0c;数据以文件的形式存储的(元数据和实际数据是分开存储的)&#xff0c;并且有…

Python学习笔记 - 探索33个保留关键字

Python编程语言中有33个保留关键字&#xff0c;这些关键字在Python语法中有特殊含义&#xff0c;不能用作变量名、函数名或其他标识符。 33个保留字&#xff08;关键字&#xff09; 不能冲突的关键词 33 个 来看看都有哪些关键字。 import keyword print("&#xff0c;…

面试专题:java多线程(3)---关于 Atomic 原子类

1.介绍一下Atomic 原子类Atomic 翻译成中文是原子的意思。在化学上&#xff0c;我们知道原子是构成一般物质的最小单位&#xff0c;在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候&#xff0c;一个操作一旦开…

cpolar内网穿透创建实现远程办公---无需公网IP

文章目录 前言1.本地访问简介2. cpolar内网穿透3. 公网远程访问4. 固定公网地址 转发自cpolar极点云的文章&#xff1a;外网远程访问公司内网用友畅捷通T财务软件 – 远程办公 前言 用友畅捷通T适用于异地多组织、多机构对企业财务汇总的管理需求&#xff1b;全面支持企业对远…

JavaScript 客户端脚本语言 选择器、事件

JavaScript发展史 JavaScript介绍 JavaScript ( 简称 JS): 是一种轻量级客户端脚本语言&#xff0c;通常被直接嵌入 HTML 页面&#xff0c;在浏览器上执 行。 JavaScript 的主要用途 : 使网页具有交互性&#xff08;如果不去使用js&#xff0c;只是使用html css那么只是…

chatgpt赋能python:Python主网站的SEO优化

Python主网站的SEO优化 作为一名有10年Python编程经验的工程师&#xff0c;我一直非常关注Python官方网站的SEO优化&#xff0c;因为官方网站对于传播Python语言的影响至关重要。在这篇文章中&#xff0c;我将介绍一些Python主网站的SEO优化策略&#xff0c;并总结一些结论&am…

程序切片(定义+用途)

程序切片(定义用途) 介绍 让我们假设我们测试了一个程序 p 并失败了&#xff08;错误的 输出&#xff09;。然后我们想找出导致失败&#xff08;故障&#xff09;的原因。 现在假设我们要更改程序的一部分。我们可能会问&#xff1a;程序的哪些其他部分受到影响 我们想找到导致…

1728_c语言标准库memcpy函数的简单使用

全部学习汇总&#xff1a; GreyZhang/c_basic: little bits of c. (github.com) 欢迎路过的YUAN类朋友相互交流&#xff0c;以下是我的联系方式&#xff1a; Email&#xff1a;greyzhang126.com 微信&#xff1a;grey0612 静态代码检测遇到了一处memcpy函数使用的错误&#…

如何DIY项目资源私有检测规则

本地资源检测是UWA推出的、面向于静态资源的全量分析。可以全面自动检测项目静态工程内各项资源、代码和设置&#xff0c;能够帮助项目组制定合理的资源与代码标准&#xff0c;及时发现潜在的性能问题和异常错误&#xff0c;建立有效的开发规范。 为了在游戏优化过程中持续与U…

计网之HTTPS的安全机制

文章目录 一. 什么是HTTPS?二. HTTPS中的加密机制(SSL/TLS)1. HTTP的安全问题2. 对称加密3. 非对称加密4. 中间人问题5. 证书 一. 什么是HTTPS? 在网络传输过程中, 存在着运营商劫持和一些黑客入侵这样的危险, 在之前只有HTTP的明文传输数据环境下, 这样的问题是有些泛滥的,…

java 利用poi根据excel模板导出数据(二)

本文是 java 利用poi根据excel模板导出数据&#xff08;一&#xff09; 的续篇 经常有poi的开发一定会碰到三个名词&#xff1a; HSSFWorkbook 、 XSSFWorkbook、SXSSFWorkbook&#xff1b; 这三个都是导出excel的形式&#xff0c;具体区别&#xff1a; HSSFworkbook,XSSF…

bert中文文本摘要代码(1)

bert中文文本摘要代码 写在最前面关于BERT使用transformers库进行微调 load_data.py自定义参数collate_fn函数BertDataset类主函数 tokenizer.py创建词汇表encode函数decode函数 写在最前面 熟悉bert&#xff0b;文本摘要的下游任务微调的代码&#xff0c;方便后续增加组件实现…