waterdrop1.x导入clickhouse分布式表-默认方式

本文详细解析了Waterdrop的ClickHouse输出插件如何写入分布式表,强调了随机策略导致的数据分布不均和不可预知性。作者探讨了如何通过修改源码或间接方法改进数据分配,以提高join和groupby性能。

先引用一段官方output clickhouse插件中,对分布式表的说明

官方文档地址:https://interestinglab.github.io/seatunnel-docs/#/zh-cn/v1/configuration/output-plugins/Clickhouse

分布式表配置

ClickHouse {
    host = "localhost:8123"
    database = "nginx"
    table = "access_msg"
    cluster = "no_replica_cluster"
    fields = ["date", "datetime", "hostname", "http_code", "data_size", "ua", "request_time"]
}
根据提供的cluster名称,会从system.clusters表里面获取当前table实际分布在那些节点上。单spark partition的数据会根据随机策略选择某一个ClickHouse节点执行具体的写入操作

从文字说明上可以得知,waterdrop实际上是写的本地表,数据的分配策略是随机

下面来实际测试:

在测试之前,请确保你的clickhouse分布式配置以及完成。可以参考:clickhouse集群模式配置_cakecc2008的专栏-优快云博客

1、创建表:

-- 创建本地表,在所有节点中都需要执行
DROP TABLE IF EXISTS dw_local.dist_test;
CREATE TABLE  dw_local.dist_test(
    id String    COMMENT 'id' ,
    user_name String    COMMENT '用户姓名' 
)
engine = MergeTree 
primary key (id)
order by  (id) 
;

truncate table dw_local.dist_test;
-- 创建分布式表
DROP TABLE IF EXISTS dw.dist_test;
CREATE TABLE  dw.dist_test(
    id String    COMMENT 'id' ,
    user_name String    COMMENT '用户姓名' 
 )
ENGINE = Distributed(dw_cluster, dw_local, dist_test);


select * from  dw_local.dist_test t  ;
select * from  dw.dist_test t  ;

2、准备数据:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值