先引用一段官方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 ;

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

被折叠的 条评论
为什么被折叠?



