当前位置: 首页 > news >正文

clickhouse聚合查询:分布式表

 

需求:clickhouse可以做聚合查询吗?也就是说有2个clickhouse,都有一个数据库是logs_saas的logs表,我通过superset查询时logs_saas数据库的logs表时能把在第一个和第二个clickhouse的查询结果合并在一起在页面展示,这2个clickhouse的logs_saas数据库的logs表结构是一样的,但数据是不一样的。

 

方案一:使用分布式表(Distributed Table)

架构原理

Superset -> ClickHouse1(分布式表)-> [ClickHouse1本地表 + ClickHouse2本地表]

具体实现步骤

步骤1:确保两个ClickHouse都能相互访问

在两个ClickHouse服务器的配置文件中(/etc/clickhouse-server/config.xml):

<!-- 允许跨服务器查询 -->
<listen_host>0.0.0.0</listen_host>

重启ClickHouse服务:

sudo systemctl restart clickhouse-server

步骤2:在ClickHouse1上创建集群配置

创建配置文件 /etc/clickhouse-server/config.d/clusters.xml

<yandex><remote_servers><two_nodes_cluster>  <!-- 集群名称 --><shard><!-- 第一个分片:ClickHouse1 --><replica><host>192.168.1.100</host>  <!-- ClickHouse1的IP --><port>9000</port><user>default</user><password></password></replica></shard><shard><!-- 第二个分片:ClickHouse2 --><replica><host>192.168.1.101</host>  <!-- ClickHouse2的IP --><port>9000</port><user>default</user><password></password></replica></shard></two_nodes_cluster></remote_servers>
</yandex>

重启ClickHouse1:

sudo systemctl restart clickhouse-server

 

步骤3:在两个ClickHouse上确保表结构一致

分别在两个ClickHouse上创建相同的表结构:

-- 在 ClickHouse1 和 ClickHouse2 上都执行
CREATE DATABASE IF NOT EXISTS logs_saas;CREATE TABLE IF NOT EXISTS logs_saas.logs_local
(id UInt64,timestamp DateTime,user_id String,event_type String,event_data String,date Date DEFAULT toDate(timestamp)
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY (date, timestamp, user_id)
SETTINGS index_granularity = 8192;

步骤4:在ClickHouse1上创建分布式表

sql
-- 只在ClickHouse1上执行
CREATE TABLE logs_saas.logs_all
(id UInt64,timestamp DateTime,user_id String,event_type String,event_data String,date Date
)
ENGINE = Distributed('two_nodes_cluster',  -- 集群名称(与配置一致)'logs_saas',          -- 数据库名'logs_local',         -- 本地表名rand()               -- 分片键(随机分布)
);

步骤5:在Superset中配置

只需要连接ClickHouse1,然后查询分布式表:

sql
-- 在Superset中查询,会自动查询两个节点
SELECT toDate(timestamp) as day,count() as total_events,uniq(user_id) as daily_users
FROM logs_saas.logs_all
WHERE date >= '2024-01-01'
GROUP BY day
ORDER BY day DESC;

验证分布式查询是否工作

-- 在ClickHouse1上执行,查看查询分发情况
EXPLAIN PLAN
SELECT count() FROM logs_saas.logs_all;-- 查看每个节点的数据分布
SELECT _shard_num,  -- 分片编号count() as row_count
FROM logs_saas.logs_all
GROUP BY _shard_num;



http://www.jsqmd.com/news/138842/

相关文章:

  • 【AdSense副业网站案例】房贷计算器 -- 从源码到部署全过程分享
  • 揭秘智谱Open-AutoGLM部署难题:5大常见错误及一键解决方案
  • 【大模型开发效率提升300%】:Open-AutoGLM自动化推理优化全揭秘
  • 【Open-AutoGLM插件使用全攻略】:掌握AI自动化推理的5大核心技巧
  • 2025年热门的可降解塑料袋/防静电PE袋优质厂家推荐榜单 - 品牌宣传支持者
  • 聊城临清网络科技公司哪家强?
  • 2025年质量好的防腐耐磨涂层/浆液泵耐磨涂层最新TOP厂家排名 - 品牌宣传支持者
  • JLink接口定义入门要点:避免接线错误
  • 你还在盲目选型?Open-AutoGLM和DeepSeek的7大核心区别一次性讲清楚
  • 【Open-AutoGLM高效集成秘籍】:快速对接企业系统的4种方法
  • Open-AutoGLM模型性能优化全攻略:提升推理速度300%的秘诀
  • PaperXie × Turnitin 联动新范式:如何用AI智能重构英文论文,真正降低AIGC检测率而不伤学术性?
  • 2025年万向轮专业制造商年度排名:万向轮排名TOP5 - mypinpai
  • 2025年五大GEO服务商官方联系电话:从技术实力到服务模式全面对比 - 品牌推荐
  • 赵阳眼科联系方式:如何甄选靠谱的儿童近视干预机构全攻略 - 品牌推荐
  • 朋友圈精准踩点秘籍,解放双手轻松获客
  • 2025年五大GEO服务商官方联系电话:从技术实力到服务模式全面对比 - 品牌推荐
  • Dify镜像可用于农业病虫害诊断问答
  • 医疗KG实体链接错 补规则匹配才稳住诊断推理
  • 开源可定制!打造专属企业在线学习考试平台的终极指南
  • 通俗讲透面向过程方法:核心是啥?哪些场景还在用它?
  • 如何快速恢复ZIP加密文件:bkcrack完整使用指南
  • 一文搞懂大模型:RAG“分而治之“的工程哲学
  • 【Open-AutoGLM实战指南】:从零构建AI Agent模型的5大核心步骤
  • 终极指南:如何快速部署现代化Hyprland桌面环境
  • 从“功能跑不通”到“落地可用”,我的AI-Agent开发踩坑实录(附避坑手册)
  • 面向对象爬虫进阶:类封装实现高复用爬虫框架​
  • 【收藏必学】AI大模型实战速训营:零基础入门,月薪6w+的AI开发之路
  • 想学编程?C语言课程详解:从入门到精通的必学要点
  • Open-AutoGLM微信自动化部署难题全解析,攻克API对接与权限验证两大关卡