基于 ClickHouse、Apache Arrow 和 Perspective 的流式实时可视化

图片

本文字数:9053;估计阅读时间:23 分钟

作者:Dale McDiarmid

本文在公众号【ClickHouseInc】首发

图片

简介

作为一家由开源驱动的公司,我们热衷于推广那些令人印象深刻的开源项目,不论是因为它们在技术上极具吸引力,还是因为它们满足了我们对性能的极致追求,或是真正能为我们的用户带来帮助。我们在发现 UI 库 Perspective 后,意识到它正好满足了这些要求,能够让用户基于 ClickHouse 数据构建真正的实时可视化!为了验证该库是否能够轻松集成到 ClickHouse 中,我们开发了一个简单的演示应用,通过 Apache Arrow 流式传输外汇(Forex)数据到浏览器中,整个过程仅使用了不到 100 行代码!

图片

该示例非常灵活,用户可以轻松调整,用于可视化任何流入 ClickHouse 的数据集。欢迎分享您的想法,同时向 Perspective 致敬,感谢他们打造了如此优秀的库!

如果您希望运行此 Perspective 示例应用,我们已经为您提供了一个可用的 ClickHouse 实例。您也可以在此尝试在线托管版本【https://perspective-clickhouse.vercel.app/】。最后,我们将探讨数据流式传输的速度极限,以及当前方法的不足之处,未来 ClickHouse 的新功能有望改善这些问题。

Perspective 简介

Perspective 库是一款高性能的数据分析和可视化工具,专为高效管理实时和流式数据集而设计。它提供了丰富的交互式和可定制的可视化图表,包括热图、折线图和树图。和 ClickHouse 一样,Perspective 的设计核心也围绕性能展开。它的底层使用 Rust 和 C++ 编写,并编译为 WebAssembly,使其能够在浏览器中处理数百万数据点,并实时响应持续的数据流。

除了基本的图表渲染,Perspective 还支持快速的数据透视、筛选和聚合操作,这些操作既可以在浏览器中执行,也可以在服务器端完成。同时,它还支持使用 ExprTK 进行表达式计算。虽然 Perspective 并非为 ClickHouse 的 PB 级大规模数据而设计,但它能够对客户端接收到的行数据进行二次转换。如果数据已经可用,仅需简单转换即可生成所需的可视化,从而减少了进一步查询的必要性。

这使得 Perspective 成为 ClickHouse 驱动的应用程序中不可或缺的一部分,尤其是在需要实时分析和顺畅交互的场景中。它支持 Python 和 JavaScript,可以轻松集成到后端的分析流程或基于 Web 的界面中。

虽然 Perspective 能够完美满足 ClickHouse 在标准可视化方面的需求,但我们对它处理流式数据的能力尤为关注。通过只保留最新的 N 行数据,它能够保持稳定的内存消耗。我们尝试验证在流式数据的场景下,如何仅加载最新的增量数据到浏览器,并只保留最相关的数据点进行总结。

我们主要探讨了 Perspective 与 JavaScript 的集成,用户还可以通过 JupyterLab 小部件和客户端库,在 Python 中使用 Perspective 进行交互式数据分析。

ClickHouse 适用于流数据吗?

尽管 ClickHouse 不是传统的流处理引擎,而是一种 OLAP 数据库,它具备增量物化视图等特性,能够实现与 Apache Flink 等流处理技术类似的功能。物化视图通过触发器机制,在数据插入时执行查询(包括聚合操作),并将结果存储到另一个表中,以便后续使用。

图片

尽管一些简单的流处理功能可以通过 ClickHouse 实现,从而简化架构,但我们也认识到 Flink 等流处理引擎在高级场景下提供了更强的功能。ClickHouse 的优势在于可以有效地存储所有数据,允许对历史数据进行查询和分析。

在我们的案例中,我们希望将 ClickHouse 中的最新数据行流式传输到 Perspective

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值