暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

通过Apache Superset连接kaiwudb实现数据可视化分析实战

原创 forever 2025-11-24
251

概述

        当清晨的第一缕阳光穿透云层,城市开始苏醒。地铁闸机吞吐着千万张面孔,共享单车在街头划出流动的轨迹,手机屏幕亮起的瞬间,外卖订单已精准抵达骑手终端。这些看似独立的场景背后,是每秒数亿次的数据交互在支撑着现代社会的运转,但是这些数据藏在背后,需要挖掘才能体现它的价值,而数据可视化就是其中展现价值的一种,数据可视化将数据转换为图表等图形表示,以便更快地理解复杂信息,这有助于分析和利益相关者识别趋势、异常值和模式,从而做出明智的决策并获得洞察。KaiwuDB通过其创新的多模架构,实现了对时序数据和关系型数据的统一存储与高效融合处理,为数据可视化提供了强大的底层支持

本次实战目标:

        一是打通KaiwuDB多模数据的访问通道,统一数据可视化入口;二是构建设备运行实时监控仪表盘,支撑运维人员快速定位异常;三是生成设备运维效率分析报表,为管理决策提供数据支撑。

KaiwuDB

        作为一款面向AIoT物联网场景的专业数据库产品,KaiwuDB的核心竞争力源于对场景需求的精准适配与技术创新。其采用分布式架构设计,实现多模数据融合处理,支持在同一实例中同时创建时序库和关系库,轻松打破不同类型数据的管理壁垒;性能上更是展现出强悍实力,可支撑千万级设备接入、百万级数据秒级写入及亿级数据秒级读取,完美匹配时序数据的高效处理需求。同时,稳定安全、高可用、易运维的产品特性,让其成为各行业一站式数据存储、管理与分析的可靠基座。而全新升级的KaiwuDB 3.0.0版本更实现全面进化,针对数据库对象管理、数据管理与查询、安全控制、分布式架构、运维监控等核心模块进行深度优化与能力增强,进一步夯实了在AIoT场景下的技术领先优势。

img

KWDB 适配多种场景,为开发者提供:

  • 多种通用连接接口,具备高速写入、极速查询、SQL 支持、随需压缩、数据生命周期管理、集群部署等特性,与第三方工具无缝集成,降低开发及学习难度,提升开发使用效率。
  • 快速安装部署、升级、迁移、监控等能力,提升数据库运维效率,降低数据库运维管理成本。
  • 数据库可视化管理工具、时序数据库基准测试工具、监控指标模板等多种生态工具。
  • MCP Server、AI 智能助手和 AI 智能体等多种 AI 赋能工具,帮助用户更高效、更智能的开发和维护 KWDB。

KaiwuDB 3.0升级特性全景一览

Apache Superset

        Apache Superset 是一款由 Apache 软件基金会孵化并开源的企业级数据可视化与探索平台,专注于为数据分析师、业务人员提供便捷的自助式数据探索、可视化报表构建及数据洞察能力,Apache Superset基于Python开发,使用了Flask、Pandas、SQLAlchemy等组件

其核心优势包括:支持对接 MySQL、PostgreSQL、ClickHouse 等主流数据源,兼容多类型数据格式;提供丰富可视化组件(折线图、柱状图、热力图、仪表盘等),支持拖拽式快速搭建报表;具备细粒度权限管控、数据脱敏等企业级特性,适配团队协作场景。

广泛应用于业务监控、数据复盘、决策支撑等场景,凭借开源免费、易部署、高扩展性的特点,成为企业构建数据中台可视化层的热门选择。

可以看到apache superset支持的各种图表

本文通过kwdb的源码安装、Apache Superset安装,通过Apache Superset连接kaiwudb实现数据可视化分析,制作漂亮的图标来展示kaiwudb的数据

一、KaiwuDB安装

编译和安装

KWDB 支持用户根据需求选择二进制安装包、容器和源码安装 KWDB 数据库:

  • 二进制安装包:支持单机和集群以及安全和非安全部署模式,更多信息见单节点部署集群部署
  • 容器镜像:KWDB 提供了多种容器镜像下载渠道,用户可以根据当前网络环境选择合适的镜像,或者直接在 Release 页面下载对应版本的后缀为 -docker.tar.gz 的压缩包解压并使用 docker load < KaiwuDB.tar 命令加载 kaiwudb_install/packages 中的镜像。
    • 官方仓库:kwdb/kwdb
    • 国内镜像:swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kwdb/kwdb
    • Github 容器镜像:ghcr.io/kwdb/kwdb
  • 源码:源码编译目前支持单节点非安全模式部署。

编译依赖与运行依赖篇幅问题可以参考官网文档:https://gitee.com/kwdb/kwdb


1、环境准备

本文以 x86 架构的 Ubuntu 22.04.5镜像作为环境,使用 源码编译方式部署 KWDB3.1.0 数据库,目前只有源码安装可以修改版本号后续介绍原因

banjin@banjin:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
banjin@banjin:~$ free -g
total used free shared buff/cache available
Mem: 9 1 0 0 8 8
Swap: 3 0 3
banjin@banjin:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 991M 1.6M 990M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 96G 15G 77G 16% /
tmpfs 4.9G 16K 4.9G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 130M 1.7G 8% /boot
tmpfs 991M 4.0K 991M 1% /run/user/1000
banjin@banjin:~$

2、安装依赖

Ubuntu 22.04.5操作系统需要安装如下包可以顺利安装,别的系统或者版本可以参考官网编译依赖

#升级aptsudo apt updatesudo apt-get install dpkg-dev devscripts libssl-dev libprotobuf-dev liblzma-dev libncurses5-dev libprotoc-dev  libgflags-dev  protobuf-compiler liblz4-dev libtool libgeos-dev
#升级libprotobuf-dev到最新版本apt install libprotobuf-dev#安装cmake和gosudo apt install cmakesudo snap install go --classic

3、创建用于存放项目代码的代码目录及设置环境变量

mkdir -p /home/go/src/gitee.comecho 'export GOPATH=/home/go' >> ~/.bashrc
echo 'export GO111MODULE=off' >> ~/.bashrc
source ~/.bashrc

4、代码下载

git clone https://gitee.com/kwdb/kwdb.git /home/go/src/gitee.com/kwbasedb #请勿修改目录路径中的 src/gitee.com/kwbasedb
cd /home/go/src/gitee.com/kwbasedb 
git submodule update --init  #适用于首次拉取代码
git submodule update --remote

如无异常显示如下

[195214]banjin@banjin:~$ cd /home/banjin/kwdb/src/gitee.com/kwbasedb
[195219]banjin@banjin:~/kwdb/src/gitee.com/kwbasedb$ git submodule update --init
[195219]Submodule 'kwbase/c-deps' (https://gitee.com/kwdb/kw-cdeps.git) registered for path 'kwbase/c-deps'
[195219]Submodule 'kwbase/vendor' (https://gitee.com/kwdb/kw-vendor.git) registered for path 'kwbase/vendor'
[195219]Submodule 'kwdbts2/third_party' (https://gitee.com/kwdb/kw-third_party.git) registered for path 'kwdbts2/third_party'
[195219]Cloning into '/home/banjin/kwdb/src/gitee.com/kwbasedb/kwbase/c-deps'...
[195229]Cloning into '/home/banjin/kwdb/src/gitee.com/kwbasedb/kwbase/vendor'...
[195245]Cloning into '/home/banjin/kwdb/src/gitee.com/kwbasedb/kwdbts2/third_party'...
[195254]Submodule path 'kwbase/c-deps': checked out 'b728c17e4840ee4eeb178fae50d1a87593c206fc'
[195255]Submodule path 'kwbase/vendor': checked out 'd63ad876f83bb3a0d561824349834aa8786cb9a9'
[195255]Submodule path 'kwdbts2/third_party': checked out '1a20721eb8e1695d7041a8abd830628f1e217b42'
[195317]banjin@banjin:~/kwdb/src/gitee.com/kwbasedb$
[195325]banjin@banjin:~/kwdb/src/gitee.com/kwbasedb$ git submodule update --remote
[195326]Submodule path 'kwbase/c-deps': checked out 'ff875020a5fa52b43c2f4290805506a898684634'

5、修改数据库显示版本

kwdb虽然默认兼容postgresql,但是使用SQLAlchemy+psycopg2连接报错,获取不了版本号,所以我们修改下源码的版本显示,加上postgresql的兼容版本,如下

vi /home/go/src/gitee.com/kwbasedb/kwbase/pkg/build/info.go

修改数据库添加postgres xxx,后面要加上空格

6、编译与安装

vmkdir build && cd build/
cmake .. 
make
make install

如无异常显示如下

banjin@banjin:/home/go/src/gitee.com/kwbasedb/build$ make install
[  4%] Built target snappy
[  7%] Built target brpc
Consolidate compiler generated dependencies of target kwdbts2
[ 88%] Built target kwdbts2
Consolidate compiler generated dependencies of target common
[ 98%] Built target common
[ 98%] ====== compile kwbase ======
Running make with -j4
GOPATH set to /home/go
Running make with -j4
GOPATH set to /home/go
gitee.com/kwbasedb/kwbase/pkg/cmd/kwbase
[ 98%] Built target kwbase
Consolidate compiler generated dependencies of target gtest
[100%] Built target gtest
Install the project...
-- Install configuration: "Debug"
-- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/df.sh
-- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/err_inject.sh
-- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/query_kwbase_status.sh
-- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/query_status.sh
-- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/setup_cert_file.sh
-- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/utils.sh
-- Installing: /home/go/src/gitee.com/kwbasedb/install/bin/kwbase
-- Installing: /home/go/src/gitee.com/kwbasedb/install/lib/libcommon.so
-- Installing: /home/go/src/gitee.com/kwbasedb/install/lib/libkwdbts2.so

7、启动数据库

#进入脚本所在目录cd /home/go/src/gitee.com/kwbasedb/install/bin
#设置共享库的搜索路径。export LD_LIBRARY_PATH=../lib
#启动数据库./kwbase start-single-node --insecure --listen-addr=:26257 --background

8、连接数据库查看版本

#在bin目录下连接数据库

./kwbase sql --insecure

可以看到数据库版本信息已有postgresql的兼容信息,这样获取数据库版本信息是就可以取到postgresql的版本信息了

二、数据准备

SampleDB 是一个用于展示示例数据与场景的项目。其核心目标是助力用户快速掌握 KWDB 数据库的使用方法,为用户提供便捷的测试与学习环境,SampleDB数据库模型是一个智能电表项目,包含关系库rdb和时序库tsdb

下载地址:https://gitee.com/kwdb/sampledb/repository/archive/master.zip

#下载 

wget https://gitee.com/kwdb/sampledb/repository/archive/master.zip

unzip master.zip

cd sampledb-master/smart-meter/extern

#在数据库数据目录创建extern目录,将rdb.tar.gz和tsdb.tar.gz移动到extern目录下,并解压

mkdir -p /home/go/src/gitee.com/kwbasedb/install/bin/kwbase-data/extern

mv rdb.tar.gz tsdb.tar.gz /home/go/src/gitee.com/kwbasedb/install/bin/kwbase-data/extern

cd /home/go/src/gitee.com/kwbasedb/install/bin/kwbase-data/extern

tar xvf rdb.tar.gz

tar xvf tsdb.tar.gz

导入 数据

/home/go/src/gitee.com/kwbasedb/install/bin/kwbase sql --insecure

#导入关系库 rdb 数据

import database csv data ("nodelocal://1/rdb");


root@:26257/defaultdb> import database csv data ("nodelocal://1/rdb");
job_id | status | fraction_completed | rows | abandon_rows | reject_rows | note
----------------------+-----------+--------------------+------+--------------+-------------+-------
1126123866200244225 | succeeded | 1 | 305 | 0 | 0 | None
(1 row)

Time: 188.877678ms

#导入时序库 tsdb 数据

root@:26257/rdb> import database csv data ("nodelocal://1/tsdb");
job_id | status | fraction_completed | rows | abandon_rows | reject_rows | note
---------+-----------+--------------------+-------+--------------+-------------+-------
- | succeeded | 1 | 10100 | 0 | 0 | None
(1 row)

Time: 269.5762ms

三、Apache Superset部署

1、安装基本库依赖

sudo apt-get install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev libpq-dev python3.10-venv

sudo apt-get install postgresql postgresql-devel python-devel python3-devel python3.10-venv #解决安装psycopg2时报错 

2、安装使用python虚拟环境

安装时用虚拟环境进行Superset安装,先下载虚拟环境,然后创建和激活虚拟环境,在虚拟环境中以避免与其他Python版本冲突,一旦激活Python虚拟环境,安装或删除的任何Python包都将保留在该环境中,并且不会影响本地Python设置。

pip install virtualenv -i https://repo.huaweicloud.com/repository/pypi/simple/

python3 -m venv venv 

source venv/bin/activate

退出虚拟环境可以使用

deactivate

3、升级虚拟环境pip

在虚拟环境中,pip 是管理 Python 包的重要工具。如果 pip 版本过旧,可能会在处理依赖关系时出现问题,导致依赖项错误。所以,为了确保虚拟环境中的项目能够顺利运行,不出现依赖项相关的错误,我们需要对虚拟环境中的 pip 版本进行升级

pip install --upgrade pip -i https://repo.huaweicloud.com/repository/pypi/simple/

4、安装apache-superset和其他支持库

pip install apache-superset -i https://repo.huaweicloud.com/repository/pypi/simple/
pip install Pillow -i https://repo.huaweicloud.com/repository/pypi/simple/
pip install psycopg2 -i https://repo.huaweicloud.com/repository/pypi/simple/

pip install Flask-Limiter==3.1 -i https://repo.huaweicloud.com/repository/pypi/simple/

pip install marshmallow==3.26.1 -i https://repo.huaweicloud.com/repository/pypi/simple/

5、设置FLASK_APP与SUPERSET_SECRET_KEY

为部署 Apache Superset(其 Web 服务基于轻量级 Python Web 框架 Flask 构建),需先配置核心环境变量,设置FLASK_APP与SUPERSET_SECRET_KEY,SECRET_KEY 加密和签名:SECRET_KEY用于对敏感数据(如会话、cookie、CSRF令牌)进行加密和签名,防止数据被篡改,确保应用的安全性,防止跨站请求伪造(CSRF)攻击和会话劫持等安全问题。

#生成 SECRET_KEY

openssl rand -base64 42

#将上面生成的SECRET_KEY填如mysecretkey

export SUPERSET_SECRET_KEY="mysecretkey"  

export FLASK_APP=superset

6、superset 初始化

创建一个管理员用户以访问Superset仪表板(使用admin作为用户名才能加载示例)。

superset fab create-admin
 
#初始化数据库
superset db upgrade
 
#加载例子数据,(可选)
superset load_examples  #国内登录git比较慢,可以在/etc/hosts里添加 151.101.64.133 raw.githubusercontent.com

 
#初始化
superset init 


至此数据库与superset的准备工作全部完成,下面可以开始通过Apache Superset连接kaiwudb实现数据可视化分析实时展示数据了

7、启动Apache Superset

superset run -p 8500 -h 0.0.0.0 --with-threads --reload --debugger

使用管理员凭据访问Superset仪表板:

http://<PUBLICIP>:<PORT>

在浏览器访问然后就可以看到以下主页,输入上面步骤superset 初始化时创建的用户密码

四、Apache Superset连接kaiwudb实现数据可视化分析

1、创建数据库连接

点击右上角的settings然后选择databaseconnectsions,打开创建数据库连接界面

kwdb是兼容pg的,我们连接直接选择postgresql就可以

填入数据库信息,因为源码安装的只支持非安全模式部署,所以密码填写为空即可,输入自定义的连接名称点击connct连接,至此数据库连接创建完成

2、创建datasets

数据集(Dataset)是Superset中连接原始数据与可视化图表的桥梁,它定义了数据的结构、类型及关联关系。在Superset的架构中,数据集管理模块通过清晰的数据模型和灵活的配置选项,支持用户快速接入各类数据源并进行标准化处理。在这里我们使用sql来定义dataset,更好的发挥出kwdb多模的能力

点击sql》sqllab,打开sqllab,类似于一个数据库的查询窗口

选择我们要连接的数据库连接

输入要要展示数据的sql,然后创建,dataset

查询区域用电量TOP10

SELECT 
  a.area_name,
  SUM(md.energy) AS total_energy
FROM tsdb.meter_data md
JOIN rdb.meter_info mi ON md.meter_id = mi.meter_id
JOIN rdb.area_info a ON mi.area_id = a.area_id
GROUP BY a.area_name
ORDER BY total_energy DESC
LIMIT 10;

保存后选择自己数据展现的方式,想用那种可视化图标更能可视化的贴近的展现

设置好以后点击保存

注意: 即使我们有可用于查询的原始数据,Superset也需要聚合。解决方法是进行无意义的聚合,就像我们上面所做的那样,即SUM(Revenue)。您可以在Stack Overflow上了解更多信息,或访问此Apache Superset GitHub页面

同理设置区域用电量统计与告警检测查询的datasets

创建区域用电量统计datasets

SELECT 
  a.region,
  a.area_name,
  SUM(md.energy) AS total_energy,
  AVG(md.power) AS avg_power
FROM tsdb.meter_data md
JOIN rdb.meter_info mi ON md.meter_id = mi.meter_id
JOIN rdb.area_info a ON mi.area_id = a.area_id
GROUP BY a.region, a.area_name;

创建告警检测查询datasets

SELECT 
  md.meter_id,
  md.ts,
  ar.rule_name,
  md.voltage,
  md.current,
  md.power
FROM tsdb.meter_data md
JOIN rdb.alarm_rules ar ON 1=1
WHERE (ar.metric = 'voltage' 
       AND ((ar.operator = '>' AND md.voltage < ar.threshold) 
            OR (ar.operator = '<' AND md.voltage > ar.threshold)))
   OR (ar.metric = 'current' AND md.current > ar.threshold)
   OR (ar.metric = 'power' AND md.power > ar.threshold)
ORDER BY md.ts DESC
LIMIT 100;

3、创建Dashboards

创建好datasets后接下来创建dashboard来展现图表,在首页点击+dashboard打开新的dashboard创建页面

设置要显示的名称,拖动创建的dataset到dashboard页面,可以拖动调整大小

上面的配置完成后,下面可以看下最终展示了,这里可以看到在Superset与kaiwudb的结合下数据直观起来

至此全部完成,放上一张superset测试数据的图表,在你的业务里Superset与kaiwudb肯定可以碰撞出更多火花

一些总结:

在使用中如果有一些实时的如最近一小时用电量统计,可以直接在sql里添加上动态时间范围,例如SELECT * FROM your_table_name WHERE time > now() - interval '1h';,然后配合上superset定时刷新,自定义双薪间隔可以实时实现数据战舰

问题:

kwdb默认支持postgresql连接方式,支持户通过 Psycopg 2 连接数据库,但是数据库版本号里默认获取不到postgresql版本,倒是superset连接不上,源码编译需要调整版本号,可以修改src/gitee.com/kwbasedb/kwbase/pkg/build/info.go文件,然后在编译安装,建议官方可以提供修改版本号的参数或者方式

五、总结

        Apache Superset与KaiwuDB的组合,构建了“高效数据存储-灵活可视化分析”的全链路解决方案:KaiwuDB以分布式多模架构解决AIoT场景的海量数据存储与实时处理难题,Superset以低代码、高灵活的可视化能力让数据洞察更高效。后续可进一步探索两者的深度融合——利用KaiwuDB 3.0.0的原生AI能力进行数据预处理,再通过Superset展示AI分析结果,实现“数据存储-智能分析-可视化呈现”的一体化落地,为工业物联网、数字能源等领域的数智化升级提供更强大的支撑。

        作为一款面向AIoT场景的国产分布式多模数据库,KaiwuDB的核心价值从不在于简单的技术堆砌,而在于对行业需求的精准洞察与极致适配。它打破了时序数据与关系数据的管理壁垒,以“一库多用”的创新架构简化技术栈;凭借百万级秒级写入、毫秒级查询的性能表现,征服高并发业务场景;更以云边端协同能力,实现从嵌入式设备到云端集群的全场景覆盖。从某重工集团借助它将设备综合效率提升18%,到智能电网项目依托它筑牢安全运行防线,再到车联网平台通过它实现精准故障预警,KaiwuDB早已不是实验室里的技术概念,而是扎根产业实践、创造真实价值的数字底座。

最后修改时间:2025-12-31 23:54:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论