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;

在这里插入图片描述

|
|
|

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

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

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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值