001.clickhouse-创建分布式表

 https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_24204.html
clickhouse登录-多行模式
clickhouse-client --host=x.x.x.x --port=9000 --user=xxxx --password=xxxx -mn
 
clickhouse 分普通表创建
 
CREATE TABLE default.tmp_ads_tr_order_info
(
 id                         Int64                         comment '订单id         '
,tenant_id                  Int64                         comment '租户ID         '
,instance_id                Nullable(Int64)               comment '实例id         '
,delivery_fee_amount        Nullable(Decimal(18,2))       COMMENT '配送费'             
,commision_amount           Nullable(Decimal(18,2))       COMMENT '平台佣金'           
,receiver_address           Nullable(String)              COMMENT '配送地址'           
,remark                     Nullable(String)              COMMENT '备注'               
,dt                         Int32
)
ENGINE = MergeTree
PARTITION BY dt
ORDER BY (tenant_id, dt)
SETTINGS index_granularity = 8192

 

 

clickhouse 分布式表操作
 
1.
-- 创建新的本地表 _local
-- 注意:
-- ReplicatedMergeTree引擎族接收两个参数:
--     ZooKeeper中该表相关数据的存储路径。
--     该路径必须在/clickhouse目录下,否则后续可能因为ZooKeeper配额不够导致数据插入失败。
--     为了避免不同表在ZooKeeper上数据冲突,目录格式必须按照如下规范填写:
--     /clickhouse/tables/{shard}/default/test,其中/clickhouse/tables/{shard}为固定值,default为数据库名,test为创建的表名。
--     副本名称,一般用{replica}即可。

CREATE TABLE IF NOT EXISTS tmp_ads_tr_order_info_local  ON CLUSTER default_cluster(
 id                         Int64                         comment '订单id         '
,tenant_id                  Int64                         comment '租户ID         '
,instance_id                Nullable(Int64)               comment '实例id         '
,delivery_fee_amount        Nullable(Decimal(18,2))       COMMENT '配送费'             
,commision_amount           Nullable(Decimal(18,2))       COMMENT '平台佣金'           
,receiver_address           Nullable(String)              COMMENT '配送地址'           
,remark                     Nullable(String)              COMMENT '备注'               
,dt                         Int32
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/tmp_ads_tr_order_info_local', '{replica}')
PARTITION BY dt
ORDER BY (tenant_id,dt)
SETTINGS index_granularity = 8192;

2.
-- 删除之前的本地表 分布式表
    drop table tmp_ads_tr_order_info_local on cluster default_cluster;
    drop table tmp_ads_tr_order_info on cluster default_cluster;

3.
-- 创建分布式表 
-- 分布式表一般加_all,
--  第一个参数是集群名称
--  第二个参数是数据库名称
--  第三个参数是对应的本地表
--  第四个参数是随机分布数据

-- Distributed引擎需要以下几个参数:
--     default_cluster_1为查看ClickHouse服务cluster等环境参数信息中2查询到的cluster集群标识符。
--     default本地表所在的数据库名称。
--     test为本地表名称,该例中为2中创建的表名。
--     (可选的)分片键(sharding key)
--     该键与config.xml中配置的分片权重(weight)一同决定写入分布式表时的路由,即数据最终落到哪个物理表上。它可以是表中一列的原始数据(如site_id),也可以是函数调用的结果,如上面的SQL语句采用了随机值rand()。注意该键要尽量保证数据均匀分布,另外一个常用的操作是采用区分度较高的列的哈希值,如intHash64(user_id)。

CREATE TABLE IF NOT EXISTS default.tmp_ads_tr_order_info ON CLUSTER default_cluster AS default.tmp_ads_tr_order_info_local
ENGINE = Distributed(default_cluster, default, tmp_ads_tr_order_info_local, rand());

 

 分布式表删除数据 本地表并指定集群名称
    alter table tmp_ads_tr_order_info_local  ON CLUSTER default_cluster delete    where dt >= toYYYYMMDD(addDays(toDate('${entryDate}'), -30)) and dt< ${abortDateValue} 
   分布式表清空数据
TRUNCATE table tmp_ads_tr_order_info_local on cluster
default_cluster ;


删除分布式表
drop table tmp_ads_tr_order_info_local on cluster default_cluster; drop table tmp_ads_tr_order_info on cluster default_cluster;

 

posted @ 2023-02-06 20:39  star521  阅读(547)  评论(0编辑  收藏  举报