当前位置: 首页 > 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.gsyq.cn/news/152315.html

相关文章:

  • 【AdSense副业网站案例】房贷计算器 -- 从源码到部署全过程分享
  • 揭秘智谱Open-AutoGLM部署难题:5大常见错误及一键解决方案
  • 【Open-AutoGLM高效集成秘籍】:快速对接企业系统的4种方法
  • PaperXie × Turnitin 联动新范式:如何用AI智能重构英文论文,真正降低AIGC检测率而不伤学术性?
  • 2025年最新榜单:广东地区汽车托运物流服务口碑推荐,正规的汽车托运物流怎么选择行业优质排行榜亮相 - 品牌推荐师
  • 2025年五大GEO服务商官方联系电话:从技术实力到服务模式全面对比 - 品牌推荐
  • 基于Python+Vue开发的口腔牙科预约管理系统源码+运行步骤+计算机专业
  • Open-AutoGLM真实用户案例分享,揭秘AI自动化的下一代主力军
  • JLink接口定义入门要点:避免接线错误
  • 面向对象设计原则SOLID指南:写更易维护的代码
  • 【Open-AutoGLM工作原理解析】:深度揭秘大模型自动化推理背后的黑科技
  • vivado安装教程2018从零实现:创建首个工程前的准备
  • C语言多线程编程:用mutex解决数据竞争与死锁问题
  • 开源可定制!打造专属企业在线学习考试平台的终极指南
  • 想学编程?C语言课程详解:从入门到精通的必学要点
  • 数小时视频,关键仅几秒:AI 如何像侦探一样找到答案?LongVT:先定位再核验,精准不瞎猜
  • Unity逆向工程终极指南:掌握Il2CppDumper的5大核心功能
  • 2025年12月美国卡车运输企业推荐:数字化赋能下的优质服务商精选 - 深度智识库
  • 2025 年 12 月全钢/全铝合金架空地板厂家实力推荐榜:高承重防静电,机房数据中心专用优选方案 - 品牌企业推荐师(官方)
  • 2025年比较好的加厚缓冲珍珠棉优质厂家推荐榜单 - 品牌宣传支持者
  • 【2025-12-24】连岳摘抄
  • 【Open-AutoGLM与DeepSeek深度对比】:揭秘两大AI模型架构差异及应用场景选择策略
  • MBA必看!9个高效降AIGC工具推荐
  • 2025年香港留学哪个机构好?12月最新香港留学中介服务解析 - 品牌企业推荐师(官方)
  • 2025年车桥螺旋齿轮生产商权威推荐榜单:中型卡车齿轮/重型卡车齿轮/汽车盆角齿轮源头厂家精选 - 品牌推荐官
  • 2025年口碑好的三节阻尼托底轨/全拉出阻尼托底轨厂家最新TOP排行榜 - 品牌宣传支持者
  • 2025年环辊磨粉机优质厂家权威推荐榜单:大型立式辊压磨机/辊压磨设备/环辊磨源头厂家精选 - 品牌推荐官
  • 排序算法技术文档
  • 2025 年 12 月东莞手信/广东特产权威推荐榜:匠心工艺与地道风味的文化传承之选 - 品牌企业推荐师(官方)
  • QRemeshify终极指南:5分钟掌握Blender四边形重拓扑技巧