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从入门到放弃的主要内容,如果未能解决你的问题,请参考以下文章

clickhouse从入门到放弃

clickhouse从入门到放弃

gentoo从入门到放弃

cmake从入门到放弃

G1从入门到放弃(二)

API网关从入门到放弃