大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (已更完)

Kafka(已更完)

Spark(已更完)

Flink(已更完)

ClickHouse(正在更新···)

章节内容

上节我们完成了如下的内容:


副本和分片

Distributed 部分

编码实际案例测试

基本介绍

ClickHouse 是一种用于 OLAP(在线分析处理)的列式数据库,因其高速数据处理能力在大数据分析中备受青睐。ClickHouse 的 SQL 语法与标准 SQL 类似,但由于其专注于分析场景,有一些特殊的扩展。ClickHouse 默认不支持直接 DELETE 或 UPDATE 操作,但可以通过分区管理和合并机制间接清理数据。ClickHouse 提供了很多专门为高效分析而设计的功能。ClickHouse 提供了丰富的聚合函数,如 sum()、avg()、min()、max()、count()。


基本 SQL 语法

ClickHouse 的 SQL 语法与标准 SQL 类似,但由于其专注于分析场景,有一些特殊的扩展。

创建表的时候:

CREATE TABLE table_name (
    column1 DataType,
    column2 DataType,
    ...
) ENGINE = MergeTree()
ORDER BY (primary_key_columns);

  • ENGINE:表引擎,最常用的是 MergeTree 系列。
  • ORDER BY:必须指定排序键,支持对大数据集高效查询。
  • PARTITION BY:按列进行分区(可选)。
  • SAMPLE BY:用于大数据量下的采样查询(可选)。

删除或清理表数据的时候:

ClickHouse 默认不支持直接 DELETE 或 UPDATE 操作,但可以通过分区管理和合并机制间接清理数据。

ALTER TABLE table_name DROP PARTITION partition_expr;

特殊功能

聚合函数

ClickHouse 提供了丰富的聚合函数,如 sum()、avg()、min()、max()、count()。此外,还有以下特殊聚合函数:

SELECT uniqExact(column) FROM table_name; -- 精确去重计数
SELECT quantiles(0.5, 0.9)(column) FROM table_name; -- 分位数计算

窗口函数

ClickHouse 支持窗口函数,但语法略有不同。常见窗口函数有 row_number()、rank() 等:

SELECT column, rowNumber() OVER (PARTITION BY partition_column ORDER BY sort_column) 
FROM table_name;

数组和嵌套类型

ClickHouse 支持数组和嵌套类型,适合处理复杂的数据结构:

SELECT arrayJoin(array) FROM table_name;

arrayJoin:将数组展开为多行

MergeTree 引擎

MergeTree 是 ClickHouse 最常用的引擎之一,具备排序、索引和分区的特性,能够高效处理海量数据。


ORDER BY:定义主键,数据按照该字段排序。

PRIMARY KEY:可以和 ORDER BY 一致,用于快速定位。

PARTITION BY:用于数据按逻辑分片,减少查询范围。

TTL:设置数据过期时间,自动清理历史数据。

基本状况

目前我是ClickHouse的集群环境:


h121.wzk.icu

h122.wzk.icu

h123.wzk.icu

建立连接

我们随机找一台建立链接

clickhouse-client -m --host h121.wzk.icu --port 9001 --user default --password clickhouse@wzk.icu

新建库

CREATE DATABASE mydatabase;
• 1

执行结果如下图所示:

可以看到对应的路径如下所示:

cd /var/lib/clickhouse/data
ls
• 1
• 2

执行结果如下图,可以看到我们刚才创建的数据库

查看数据库

SHOW DATABASES;
• 1

运行结果如下图:

新建表

# 方式1
CREATE TABLE my_table(
  title String,
  url String,
  eventTime DateTime
) ENGINE = Memory;

# 方式2
CREATE TABLE mydatabase.my_table(
  title String,
  url String,
  eventTime DateTime
) ENGINE = Memory;

# 方式3
CREATE TABLE mydatabase.my_table_2(
  title String,
  url String,
  eventTime DateTime
) ENGINE = Memory AS SELECT * FROM mydatabase.my_table;

执行结果如下图所示:

查表结构

DESC my_table;
• 1

执行结果如下图:

插入数据

INSERT INTO my_table VALUES ('wzk', '123', now());
• 1

执行的结果如下所示:

临时表

CREATE TABLE tmp_v1 (
  title String,
  create_time DateTime
) ENGINE = Memory;

如果临时表与正常表名字相同,临时表优先。

临时表的引擎只能是Memory,数据是临时的,断点数据就没了。

更多的是在ClickHouse内部,是数据在集群间传播度的载体。

分区表

创建新表

CREATE TABLE partition_v1 (
  `id` String,
  `url` String,
  `eventTime` Date
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(eventTime)
ORDER BY id;

执行结果如下所示:

只有合并树(MergeTree)家族的表引擎支持分区表,可以利用分区表,做定位查询,缩小查询范围。分区字段不易设置的太小。

插入数据

INSERT INTO partition_v1 (id, url, eventTime) VALUES
('1', 'http://example.com/page1', '2024-01-01'),
('2', 'http://example.com/page2', '2024-01-15'),
('3', 'http://example.com/page3', '2024-02-01'),
('4', 'http://example.com/page4', '2024-02-15'),
('5', 'http://example.com/page5', '2024-03-01'),
('6', 'http://example.com/page6', '2024-03-15');

执行结果如下图所示:

接下篇:https://developer.aliyun.com/article/1623012

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践
川航选择引入 SelectDB 建设湖仓一体大数据分析引擎,取得了数据导入效率提升 3-6 倍,查询分析性能提升 10-18 倍、实时性提升至 5 秒内等收益。
从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
天翼云基于 Apache Doris 成功落地项目已超 20 个,整体集群规模超 50 套,部署节点超 3000 个,存储容量超 15PB
天翼云:Apache Doris + Iceberg 超大规模湖仓一体实践
玩转大数据:从零开始掌握SQL查询基础
玩转大数据:从零开始掌握SQL查询基础
129 35
vivo基于Paimon的湖仓一体落地实践
本文整理自vivo互联网大数据专家徐昱在Flink Forward Asia 2024的分享,基于实际案例探讨了构建现代化数据湖仓的关键决策和技术实践。内容涵盖组件选型、架构设计、离线加速、流批链路统一、消息组件替代、样本拼接、查询提速、元数据监控、数据迁移及未来展望等方面。通过这些探索,展示了如何优化性能、降低成本并提升数据处理效率,为相关领域提供了宝贵的经验和参考。
509 3
vivo基于Paimon的湖仓一体落地实践
StarRocks 在爱奇艺大数据场景的实践
本文介绍了爱奇艺大数据OLAP服务负责人林豪在StarRocks年度峰会上的分享,重点讲述了爱奇艺OLAP引擎的演进及引入StarRocks后的显著效果。在广告业务中,StarRocks替换Impala+Kudu后,接口性能提升400%,P90查询延迟缩短4.6倍;在“魔镜”数据分析平台中,StarRocks替代Spark达67%,P50查询速度提升33倍,P90提升15倍,节省4.6个人天。未来,爱奇艺计划进一步优化存算一体和存算分离架构,提升整体数据处理效率。
StarRocks 在爱奇艺大数据场景的实践
云栖实录 | 大模型在大数据智能运维的应用实践
云栖实录 | 大模型在大数据智能运维的应用实践
228 3
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")

热门文章

最新文章