大数据-ClickHouse技术四(分布式表)

一、查看分布式配置

假定4台服务器 10.1.1.1  和 10.1.1.2 和10.1.1.3 和10.1.1.4

设定为 2个分片(s),2个副本(r)

10.1.1.1 是 s1r1  10.1.1.2是s1r2

10.1.1.3是s2r1     10.1.1.4是s2r2

查看本地分片状态位:SELECT *from system.macros;

二、新建分布式表的本地表

新建分布式表依赖于分布式ddl

分布式ddl指的是在一台服务器上执行sql,其他服务器同步执行,需要借助于cluster,如下方

create table tableName on cluster my_shard (id Int8,name String)engine=xxx ;

上面创建的一张表,除了on cluster my_shard以外就是正常的创建表语句,my_shard我们上面配置过,里面一共包含了10.1.1.1-  s1r1 和 10.1.1.2-s1r2 和10.1.1.3-s2r1 和10.1.1.4-s2r2  四个replica,那么在执行的时候,就会到my_shard配置下的所有服务器中执行create table语句.也就是这三台服务器任意一台执行以上sql,三台的表都会创建好,这就是分布式ddl,分布式ddl也需要zookeeper的支持,同样也支持CREATE、DROP、ALTER、RENAME

示例代码:

CREATE TABLE if not exists default.test_cluster_g on cluster my_shard
(

    `UserID` UInt64,

    `PageViews` UInt8,

    `Duration` UInt8,

    `Sign` Int8,

    `Version` UInt8
)
ENGINE = ReplicatedMergeTree
ORDER BY UserID
SETTINGS index_granularity = 8192;

默认新建,副本表会有很多参数,只要在配置文件中加上配置项,就可以在新建表的时候省略这些参数 

ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard_name}/replicaTest3', '{replica_name}')

执行完成分布式DDL后,就可以发现各个分片的各个副本都生成了对应的表。
三、同步数据

1、默认情况下,对test_cluster_g 表进行insert,都是只会在本分片生效,副本间同步。

不会到另一个分片上去。需要新建一个对应的分布式表,对分布式表进行insert,这样会按照一定的规则,把数据分散插入到各个分片上。

2、新建分布式表

Distributed(cluster_name, db_name, table_name[, sharding_key[, policy_name]])

第一个是配置的cluster名称,第二个第三个分别代表代理的数据库,数据表,第四个参数是数据插入分发策略,指定一个字段名(必须是Int类型)或者rand(),第五个参数是策略名称。

示例代码

CREATE TABLE default.test_cluster_g_all on cluster my_shard
(

    `UserID` UInt64,

    `PageViews` UInt8,

    `Duration` UInt8,

    `Sign` Int8,

    `Version` UInt8
)
ENGINE = Distributed('my_shard',
 'default',
 'test_cluster_g',
 rand())

3、insert分布式表

此时insert 分布式表,会将数据分散发送到各个分片。分片内部不同副本,数据由zookeeper进行同步。select分布式表,查询的全部分片

此时就可以使用了分布式了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值