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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 大数据技术之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 上分别建表

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

                                                                                     

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

                                                                                     

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

                                                                                     

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

相关文章
|
16天前
|
SQL 存储 NoSQL
SQL vs. NoSQL:如何根据大数据需求选择合适数据库
【4月更文挑战第8天】本文对比分析了SQL与NoSQL数据库在大数据项目中的应用。SQL数据库适合结构化数据、强一致性和复杂事务处理,如金融系统,而NoSQL则适用于半结构化和非结构化数据、高并发及大数据场景,如社交网络。选择时应考虑业务需求、技术栈、团队经验和成本效益,以找到最佳解决方案。随着技术发展,NewSQL和Multi-model数据库也提供了更多选择。
42 0
|
16天前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之大数据计算MaxCompute即使用相同的SQL语句在DataWorks和Tunnel上执行,结果却不同,如何解决
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2天前
|
SQL 分布式计算 大数据
利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器
利用SparkSQL Logical Plan Parse 打造大数据平台SQL诊断利器
5 0
|
8天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之sql读取mysql写入clickhouse,该如何操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11天前
|
SQL 分布式计算 Java
大数据软件基础(2)—— Java、SQL
大数据软件基础(2)—— Java、SQL
11 0
|
16天前
|
SQL 关系型数据库 数据库
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
SQL Server语法基础:入门到精通
|
16天前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在DataWorks中使用ODPS SQL时遇到"该文件对应引擎实例已失效,请重新选择可用的引擎实例"的错误提示”,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
42 0
|
16天前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之DataWorks中,填写ODPS SQL任务中的参数和分区信息如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
34 0
|
16天前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用合集之阿里云MaxCompute对SQL语句的长度的长度限制是多少
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
16天前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之在sql 里嵌套查询时,查询条件带有instr时报错,如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。

热门文章

最新文章

http://www.vxiaotou.com