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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 大数据技术之Clickhouse---入门篇---SQL操作、副本

                                                                                 

                       星光下的赶路人star的个人主页

                      知世故而不世故 是善良的成熟


文章目录



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';
• 1

(2)修改操作

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

由于操作比较“重”,所以 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;
• 1
• 2


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

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

(4)with totals: 只计算合计

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


1.4 alter操作


同 MySQL 的修改字段基本一致

1、新增字段

alter table tableName add column newcolname String after col1;
• 1

2、修改字段类型

alter table tableName modify column newcolname String;
• 1

3、删除字段

alter table tableName drop column newcolname;
• 1

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 上分别建表

副本只能同步数据,不能同步表结构,所以我们需要在每台机器上自己手动建表

                                                                                     

                                                                        您的支持是我创作的无限动力

                                                                                     

                      希望我能为您的未来尽绵薄之力

                                                                                     

                    如有错误,谢谢指正若有收获,谢谢赞美

相关文章
|
14天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
46 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
6天前
|
存储 监控 数据挖掘
【Clikhouse 探秘】ClickHouse 物化视图:加速大数据分析的新利器
ClickHouse 的物化视图是一种特殊表,通过预先计算并存储查询结果,显著提高查询性能,减少资源消耗,适用于实时报表、日志分析、用户行为分析、金融数据分析和物联网数据分析等场景。物化视图的创建、数据插入、更新和一致性保证通过事务机制实现。
42 14
|
5天前
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
13天前
|
分布式计算 大数据 BI
ClickHouse与大数据生态整合:从ETL到BI报表
【10月更文挑战第27天】在这个数据驱动的时代,企业越来越依赖于数据来做出关键决策。而高效的数据处理和分析能力则是支撑这一需求的基础。作为一位数据工程师,我有幸参与到一个项目中,该项目旨在利用ClickHouse与Hadoop、Spark、Flink等大数据处理框架的整合,构建一个从数据提取(Extract)、转换(Transform)、加载(Load)到最终生成商业智能(BI)报表的全流程解决方案。以下是我在这个项目中的经验和思考。
30 1
|
1月前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
70 0
|
1月前
|
SQL 大数据
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
54 0
|
1月前
|
存储 SQL 分布式计算
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
119 0
|
1月前
|
SQL 消息中间件 分布式计算
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(一)
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(一)
52 0
|
1月前
|
SQL 大数据
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(二)
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(二)
62 0
|
1月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势