Clickhouse 外部表本地表副本表和分布式表

Posted 羲凡丞相

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Clickhouse 外部表本地表副本表和分布式表相关的知识,希望对你有一定的参考价值。

@羲凡——只为了更好的活着

Clickhouse 外部表、本地表、副本表和分布式表

四个表简介
外部表:ck中只有元数据,数据在hdfs等外部存储介质中
本地表:ck的单机表,在某台机器上创建,就只能在这个机器上使用
副本表:数据在ck集群上,每个分片有多个副本
分布式表:相当于传统数据库的视图,对大批量的数据不推荐直接插分布式表

前期准备

a.安装 两分片两副本的Clickhouse集群
b.样例数据
1,羲凡,29,1992-02-27,nj
5,张三,27,1994-02-27,sh
3,李四,29,1992-02-19,nj
7,王二,20,1992-02-19,bj
4,赵五,1,2020-01-20,nj

现在开始

clickhouse-client -u default --password 123456 --port 9000 -h yc-nsg-h21 --multiquery

0.创建数据库

CREATE database IF NOT EXISTS test_db on CLUSTER test_ck_cluster ;

1.hdfs外部表(数据类型CSV必须大写)

CREATE TABLE test_db.hdfs_staff_replica
(
    `id` UInt8,
    `name` String,
    `age` Int8,
    `birthday` Date,
    `city` FixedString(2)
)
ENGINE = HDFS('hdfs://ip:port/tmp/hdfs_staff_replica.csv', 'CSV');

2、本地表

CREATE TABLE test_db.staff_local
(
`id` UInt8,
`name` String,
`age` Int8,
`birthday` Date,
`city` FixedString(2),
PRIMARY KEY (`id`)
)
ENGINE = MergeTree
ORDER BY (id, name, age);
# 加载本地文件到本地表中
clickhouse-client -u default --password 123456 --port 9000 -h yc-nsg-h22 --query="insert into test_db.staff_local FORMAT CSV" < ./staff_local.csv

3、副本表

CREATE TABLE test_db.staff_replica ON CLUSTER test_ck_cluster
(
    `id` UInt8,
    `name` String,
    `age` Int8,
    `birthday` Date,
    `city` FixedString(2),
	PRIMARY KEY (`id`)
)
ENGINE=ReplicatedMergeTree('/clickhouse/tables/layer-shard/database/table', 'replica')
ORDER BY (id, name, age) ;
# 将本地表中数据插入副本表中
INSERT INTO test_db.staff_replica SELECT * FROM test_db.staff_local ;

4、分布式表

CREATE TABLE test_db.staff_all ON CLUSTER test_ck_cluster 
AS test_db.staff_replica 
ENGINE = Distributed(test_ck_cluster, test_db, staff_replica, rand());
# 清除副本表中的数据
truncate table test_db.staff_replica ON CLUSTER test_ck_cluster; 
# 重新将本地表中的数据插入分布式表中(这样插入,数据会均匀的分布在集群上)
insert into test_db.staff_all select * from test_db.staff_local ;
# 因为有两个分片所以分两块显示
select * from staff_all;

|
|
|

====================================================================

@羲凡——只为了更好的活着

若对博客中有任何问题,欢迎留言交流

以上是关于Clickhouse 外部表本地表副本表和分布式表的主要内容,如果未能解决你的问题,请参考以下文章

ClickHouse-尚硅谷(15. 高级-常见问题排查)学习笔记

Clickhouse副本表以及分布式表简单实践

ClickHouse-尚硅谷(15. 高级-常见问题排查)学习笔记

clickhouse 20.x 三分片两副本部署与本地表的压力测试

ClickHouse创建分布式表

ClickHouse创建分布式表