clickhouse从入门到放弃
Posted mr.杰瑞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clickhouse从入门到放弃相关的知识,希望对你有一定的参考价值。
最近公司需要使用clickhouse做数据分析,我赶紧从docker上下载一个,学习学习。学习成本不大,会mysql就行。
下载
下载clickhouse包
docker pull yandex/clickhouse-client
docker pull yandex/clickhouse-server
启动clickhouse-server实例
docker run -d --name clickhouse --ulimit nofile=262144:262144 yandex/clickhouse-server
-d 代表后台运行 --name 自定义名称 -p:容器端口映射到当前主机端口 不指定默认http端口是8123,tcp端口是9000
我这里直接用默认的,有需求的话,可以自己加
启动客户端
docker run -it --rm --link clickhouse:clickhouse-server yandex/clickhouse-client --host clickhouse-server
出来这个就可以体验了。
分区
它强大的点是这个东东
MergeTree的表引擎才支持主键索引,数据分区,数据副本,数据采样这些特性,只有此系列的表引擎才支持ALTER操作
必填项:
1.ENGINE:创建MergeTree的表引擎指定ENGINE = MergeTree()
2.ORDER BY语句:sorting key 排序键,用于指定在一个数据片段内数据以何种标准排序。默认情况下是主键primary key
选填项
PARTITION BY :分区键 用于指定表数据以何种标准进行分区。分区键可以单个列字段,也可以是通过元祖形式使用的多个列字段,还可以支持使用列表达式。(意思是可以组合多个字段进行分区)
若不声明分区键则clickhouse会生成一个名为all的分区。合理使用分区 可以有效减少查询数据文件的扫描范围。
分区:通过人名分区
create table name_partition(
uid Int8,
name String
grade Int8
)
engine=MergeTree()
order by grade
partition by name;
insert into name_partition values(3,'xiaoming1',80),(5,'xiaoming',10),(1,'xiaohong',90),(7,'fangfang',8),(30,'xiaoming',60),(11,'fangfang',40);
可以看到表根据名字进行了分区
insert into name_partition values(80,'xiaohong',100),(50,'xiaoming',3);
将分区合并 optimize table表名
optimize table name_partition
发现什么了,如果插入的语句设计到分区字段的不同的枚举值的话,每次执行合并只合并一个。
再执行一次就可以了
基本使用
未完待续~
以上是关于clickhouse从入门到放弃的主要内容,如果未能解决你的问题,请参考以下文章