大数据技术之Clickhouse---入门篇---SQL操作、副本

在这里插入图片描述
                       星光下的赶路人star的个人主页

                      积一勺以成江河,累微尘以崇峻极

文章目录

  • 1、SQL操作
    • 1.1 Insert
    • 1.2 Update 和 Delete
    • 1.3 查询操作
    • 1.4 alter操作
    • 1.5 导出数据
  • 2、副本
    • 2.1 副本写入流程
    • 2.2 配置步骤

1、SQL操作

基本上来说传统关系型数据库(以 MySQL 为例)的 SQL 语句,ClickHouse 基本都支持,
这里不会从头讲解 SQL 语法只介绍 ClickHouse 与标准 SQL(MySQL)不一致的地方。

1.1 Insert

基本与标准 SQL(MySQL)基本一致
(1)标准
insert into [table_name] values(…),(….)
(2)从表到表的插入
insert into [table_name] select a,b,c from [table_name_2]

1.2 Update 和 Delete

ClickHouse 提供了 Delete 和 Update 的能力,这类操作被称为 Mutation 查询,它可以看
做 Alter 的一种。
虽然可以实现修改和删除,但是和一般的 OLTP 数据库不一样,Mutation 语句是一种很
“重”的操作,而且不支持事务。
“重”的原因主要是每次修改或者删除都会导致放弃目标数据的原有分区,重建新分区。
所以尽量做批量的变更,不要进行频繁小数据的操作。
(1)删除操作

alter table t_order_smt delete where sku_id ='sku_001';

(2)修改操作

alter table t_order_smt update total_amount=toDecimal32(2000.00,2) where id 
=102;

由于操作比较“重”,所以 Mutation 语句分两步执行,同步执行的部分其实只是进行
新增数据新增分区和并把旧分区打上逻辑上的失效标记。直到触发分区合并的时候,才会删
除旧数据释放磁盘空间,一般不会开放这样的功能给用户,由管理员完成。

1.3 查询操作

ClickHouse 基本上与标准 SQL 差别不大
支持子查询
支持 CTE(Common Table Expression 公用表表达式 with 子句)
支持各种 JOIN,但是 JOIN 操作无法使用缓存,所以即使是两次相同的 JOIN 语句,
ClickHouse 也会视为两条新 SQL
窗口函数(官方正在测试中…)
不支持自定义函数
GROUP BY 操作增加了 with rollup\with cube\with total 用来计算小计和总计。
(1)插入数据

hadoop102 :) alter table t_order_mt delete where 1=1;
insert into t_order_mt values
(101,'sku_001',1000.00,'2020-06-01 12:00:00'),
(101,'sku_002',2000.00,'2020-06-01 12:00:00'),
(103,'sku_004',2500.00,'2020-06-01 12:00:00'),
(104,'sku_002',2000.00,'2020-06-01 12:00:00'),
(105,'sku_003',600.00,'2020-06-02 12:00:00'),
(106,'sku_001',1000.00,'2020-06-04 12:00:00'),
(107,'sku_002',2000.00,'2020-06-04 12:00:00'),
(108,'sku_004',2500.00,'2020-06-04 12:00:00'),
(109,'sku_002',2000.00,'2020-06-04 12:00:00'),
(110,'sku_003',600.00,'2020-06-01 12:00:00');

(2)with rollup:从右至左去掉维度进行小计

hadoop102 :) select id , sku_id,sum(total_amount) from t_order_mt group by 
id,sku_id with rollup;

(3)with cube : 从右至左去掉维度进行小计,再从左至右去掉维度进行小计

hadoop102 :) select id , sku_id,sum(total_amount) from t_order_mt group by 
id,sku_id with cube;

(4)with totals: 只计算合计

hadoop102 :) select id , sku_id,sum(total_amount) from t_order_mt group by 
id,sku_id with totals;

1.4 alter操作

同 MySQL 的修改字段基本一致
1、新增字段

alter table tableName add column newcolname String after col1;

2、修改字段类型

alter table tableName modify column newcolname String;

3、删除字段

alter table tableName drop column newcolname;

1.5 导出数据

clickhouse-client --query "select * from t_order_mt where 
create_time='2020-06-01 12:00:00'" --format CSVWithNames> 
/opt/module/data/rs1.csv

更多支持格式参照:https://clickhouse.tech/docs/en/interfaces/formats/

2、副本

副本的目的主要是保障数据的高可用性,即使一台 ClickHouse 节点宕机,那么也可以从
其他服务器获得相同的数据。

2.1 副本写入流程

在这里插入图片描述

2.2 配置步骤

1、启动 zookeeper 集群
2、在 hadoop102 的/etc/clickhouse-server/config.d 目录下创建一个名为 metrika.xml
的配置文件,内容如下:
注::也可以不创建外部文件,直接在 config.xml 中指定

<?xml version="1.0"?>
<yandex>
<zookeeper-servers><node index="1"><host>hadoop102</host><port>2181</port></node><node index="2"><host>hadoop103</host><port>2181</port></node><node index="3"><host>hadoop104</host><port>2181</port></node>
</zookeeper-servers>
</yandex>

3、同步到hadoop103和hadoop104上
4、在 hadoop102 的/etc/clickhouse-server/config.xml 中增加

<zookeeper incl="zookeeper-servers" optional="true" />
<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>

5、同步到 hadoop103 和 hadoop104 上
(1)分别在 hadoop102 和 hadoop103 上启动 ClickHouse 服务
注意:因为修改了配置文件,如果以前启动了服务需要重启
注意:我们演示副本操作只需要在 hadoop102 和 hadoop103 两台服务器即可,上面的
操作,我们 hadoop104 可以你不用同步,我们这里为了保证集群中资源的一致性,做了同
步。

6、在 hadoop102 和 hadoop103 上分别建表
副本只能同步数据,不能同步表结构,所以我们需要在每台机器上自己手动建表
在这里插入图片描述
                      您的支持是我创作的无限动力

在这里插入图片描述
                      希望我能为您的未来尽绵薄之力

在这里插入图片描述
                      如有错误,谢谢指正;若有收获,谢谢赞美

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

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

相关文章

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 4

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

phpstudy 进行 composer 全局配置

背景 因为注意到&#xff0c;使用 phpStudy 进行环境搭建时&#xff0c;有时需要使用 composer 每次都需要查找资料进行配置&#xff0c; 在此进行记录笔记&#xff0c;方便有需要的道友借鉴 配置 版本&#xff1a;composer1.8.5&#xff08;phpStudy8 当前只能安装这一个版本…

Flink作业调度的9种状态

1.什么是作业调度 Flink 通过 Task Slots 来定义执行资源。每个 TaskManager 有一到多个 task slot&#xff0c;每个 task slot 可以运行一条由多个并行 task 组成的流水线。 这样一条流水线由多个连续的 task 组成&#xff0c;比如并行度为 n 的 MapFunction 和 并行度为 n 的…

省份数量(力扣)深度优先 JAVA

有 n 个城市&#xff0c;其中一些彼此相连&#xff0c;另一些没有相连。如果城市 a 与城市 b 直接相连&#xff0c;且城市 b 与城市 c 直接相连&#xff0c;那么城市 a 与城市c 间接相连。 省份 是一组直接或间接相连的城市&#xff0c;组内不含其他没有相连的城市。 给你一个 …

作为一个老程序员,想对新人说什么?

前言 最近知乎上&#xff0c;有一位大佬邀请我回答下面这个问题&#xff0c;看到这个问题我百感交集&#xff0c;感触颇多。 在我是新人时&#xff0c;如果有前辈能够指导方向一下&#xff0c;分享一些踩坑经历&#xff0c;或许会让我少走很多弯路&#xff0c;节省更多的学习的…

CNVD-2023-12632 泛微e-cology9 sql注入 附poc

目录 漏洞描述影响版本漏洞复现漏洞修复 众亦信安&#xff0c;中意你啊&#xff01; 微信搜索&#xff1a;众亦信安&#xff0c;回复关键字&#xff1a;230317 领批量检测脚本。 声明&#xff1a;文中涉及到的技术和工具&#xff0c;仅供学习使用&#xff0c;禁止从事任何非法…

汽车智能化再掀新热潮!「中央计算架构」进入规模量产周期

中央计算区域控制的新一代整车电子架构&#xff0c;已经成为车企继电动化、智能化&#xff08;功能上车&#xff09;之后&#xff0c;新一轮竞争的焦点。 如果说智能化的1.0阶段&#xff0c;是智能驾驶智能座舱的争夺战&#xff1b;那么&#xff0c;即将进入的2.0阶段&#xff…

黑马大数据学习笔记3-MapReduce配置和YARN部署以及基本命令

目录 部署说明MapReduce配置文件YARN配置文件分发配置文件集群启动命令开始启动YARN集群 查看YARN的WEB UI页面保存快照YARN集群的启停命令一键启动脚本单进程启停 提交MapReduce任务到YARN执行提交wordcount示例程序查看运行日志提交求圆周率示例程序 p41~43 https://www.bili…

IntelliJ IDEA快捷键大全 + 动图演示!

一、构建/编译 Ctrl F9&#xff1a;构建项目该快捷键&#xff0c;等同于菜单【Build】—>【Build Project】 执行该命令后&#xff0c;IntelliJ IDEA 会编译项目中所有类&#xff0c;并将编译结果输出到out目录中。IntelliJ IDEA 支持增量构建&#xff0c;会在上次构建的基…

ES6之Promise、Class类与模块化(Modules)

目录 PromiseClass类extendssuper Modules 模块系统export default 和对应importexport 和 import Promise Promise 是 ES6 引入的一种用于处理异步操作的对象。 它解决了传统回调函数&#xff08;callback&#xff09;模式中容易出现的回调地狱和代码可读性差的问题。 Promis…

MySQL binLog问题

看到数据库目录下有很多OFF.*文件的时候很诧异&#xff0c;这玩意是啥&#xff0c;binlog不应该都是*bin-log.*​的文件吗&#xff1f;* [roottest ~]# cd /data/mysql_data [roottest mysql_data]# ls ansible hap_attach_yl hap_func_yl hap_msg_yl h…

ThreadPoolExecutor详解(上)

为什么会有线程池&#xff1f; 如果客户端发一个请求&#xff0c;服务端就创建一个线程接收请求&#xff0c;线程资源是有限的&#xff0c;而且创建一个线程和执行结束之后都要调用操作系统资源销毁线程&#xff0c;这样频繁操作肯定非常占用cpu和内存资源&#xff0c;线程池的…

改进粒子群算法优化BP神经网络---回归+分类两种案例

今天采用改进的粒子群算法(LPSO)优化算法优化BP神经网络。本文选用的LPSO算法是之前作者写过的一篇文章&#xff1a;基于改进莱维飞行和混沌映射&#xff08;10种混沌映射随意切换&#xff09;的粒子群优化算法&#xff0c;附matlab代码 文章一次性讲解两种案例&#xff0c;回归…

shiro快速入门

文章目录 权限管理什么是权限管理&#xff1f;什么是身份认证&#xff1f;什么是授权&#xff1f; 什么是shiro&#xff1f;shiro的核心架构shiro中的三个核心组件 shiro中的认证shiro中的授权shiro使用默认Ehcache实现缓存shiro使用redis作为缓存实现 权限管理 什么是权限管理…

Express中间件

1.创建最基本的中间件 const express require(express); const send require(send);const app express()const mw function (req, res, next) {console.log(middleware);// 一定要调用next() 把流转关系交给下一个中间件或路由next() }app.listen(80, () > {console.l…

SpringBoot —程序包org.springframework.boot.test.context不存在

一. 遇到问题 &#xff1a;程序包org.springframework.boot.test.context不存在 发生错误的原因是项目中缺少spring-boot-starter-test依赖导致的&#xff0c;解决方案如下: 在项目根目录的pom.xm文件中的<dependencies>节点下增加以下依赖即可&#xff1a; <depen…

uniApp 插件 Fvv-UniSerialPort 使用实例

接上一篇 uniApp 对接安卓平板刷卡器, 读取串口数据 , 本文将详细介绍如何使用插件读取到串口数据 原理 通过uniApp 插件读取设备串口数据, 解析后供业务使用; 步骤 创建uniApp 项目;添加插件 安卓串口通信 Fvv-UniSerialPort 安卓串口通信 Fvv-UniSerialPort - DCloud 插件…

PoseiSwap:通过 RWA 的全新叙事,反哺 Nautilus Chain 生态

PoseiSwap 是 Nautilus Chain 上的首个 DEX&#xff0c;作为目前行业内模块化区块链叙事的早期奉行者&#xff0c;PoseiSwap 也得到了较高的市场关注。基于 Nautilus Chain&#xff0c;PoseiSwap 打造了一个全新的 Rollup 应用层&#xff0c;并通过零知识证明来建立全新的订单簿…

刷完这个笔记,15K真的不能再少了....

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;得准备面试了&#xff0c;又不知道从何下手&#xff01;为了帮大家节约时间&#xff0c;特意准备了一份面试相关的资料&#xff0c;内容非常的全面&#xff0c;真的可以好好补一补&#xff0c;希望大家在都能拿到理想…

SQL-每日一题【1174. 即时食物配送 II】

题目 配送表: Delivery 如果顾客期望的配送日期和下单日期相同&#xff0c;则该订单称为 「即时订单」&#xff0c;否则称为「计划订单」。 「首次订单」是顾客最早创建的订单。我们保证一个顾客只会有一个「首次订单」。 写一条 SQL 查询语句获取即时订单在所有用户的首次订…