流批结合计算以及更多原生分析能力支持

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 十月,eKuiper发布了1.7.0版本:引入了查询表和可更新Sink的概念,支持数据流与外部存储的数据一起计算,进一步完善了流批结合的实时计算能力。

十月,eKuiper 正式发布了 1.7.0 版本。这一版本引入了查询表和可更新 Sink 的概念,支持数据流与外部存储的数据一起计算,进一步完善了流批结合的实时计算能力。与此同时,我们改进了分析函数,支持分流进行有状态计算,添加了更多的分析函数,继续提高规则的表达能力。在外部连接整合方面,我们丰富了source/sink,部分资源整合适配了新的查询表和可更新 Sink 的能力。另外,新版本也着力提高产品运维的能力,优化了管理控制台的外部资源 source/sink 的管理逻辑;提供了规则集的批量导入导出和初始化功能。

在之前的 Newsletter 中,我们已经对 v1.7.0 的部分功能进行了介绍,本文将重点介绍本月新添加的功能。欢迎大家下载试用,并提出您的宝贵反馈。

强化分析能力

新版本添加和改进了 SQL 语法和内置函数,支持更多原生的分析能力。

  • 添加了新的 Lookup Table 概念,用于绑定外部静态数据,可以在规则中与流数据进行连接,实现流批结合的运算。
  • 可更新的 Sink,除了原有的添加功能,支持通过规则对外部输出进行修改和删除。例如,可配置规则修改 SQL 数据库和 Redis 的数据。
  • 分析函数执行优化及分流计算。
  • 新增分析函数 Latest,可获取数据点位最新的值。用于采集数据点位不固定,可自动拼接计算完整数据。
  • SQL 支持选择 * 的同时,选择更多的函数计算、别名等。

分析函数分流计算

分析函数指的是通过保存状态进行状态相关分析的函数,使得用户可以无需通过复杂的时间窗口或者自定义函数完成一部分常用的有状态计算。eKuiper 原有版本中已经提供了诸如 lagchanged_colhad_changed 等分析函数。新的版本中,我们对分析函数进行了强化。

首先,分析函数在 SQL 逻辑计划中将被放置于数据源之后执行。运行时在流式处理规则中,分析函数需要在事件触发时进行状态更新。若在部分子句中,例如带 WHERE 过滤的规则中使用,有可能函数尚未执行规则已经返回。新的改动保证在事件触发时可及时进行状态更新。

其次,分析函数中添加了 Partition By 的分流语法。分析函数的计算默认是在数据流的所有输入事件上进行的。然而,有部分用户的数据流事实上包含了来自不同维度的数据,例如多个设备的数据混杂在一个 MQTT topic 中。新的语法允许用户在做分析计算时根据 Partition By 定义的维度进行分流计算。其语法如下所示:

textAnalyticFuncName(<arguments>...) OVER ([PARTITION BY <partition key>])

假设用户接入一个数据流,其中的事件为来自多个设备的温度数据。以下两个示例分别演示了有无分流的计算效果。

示例 1:获取之前温度值的函数

lag(temperature)

示例 2:获取相同设备之前温度值的函数

lag(temperature) OVER (PARTITION BY deviceId)

扩大连接生态

新版本在资源连接方面主要完成了两部分工作:一方面继续增加内置和扩展的 source/sink;另一方面,扩展现有 source/sink 功能,并适配 Lookup Table 和 Updatable Sink 的能力。

  • Httppush source,通过 HTTP 协议向 eKuiper 推送数据。
  • Influx V2 sink,支持写入到 InfluxDB 2.x 版本中。
  • Redis lookup source,支持使用 Redis 作为外部查询表。
  • EdgeX source 支持 application/cbor 格式,可处理 EdgeX camera 等接入的二进制数据。
  • Memory 和 SQL source 适配 Lookup Table
  • Memory、Redis 和 SQL sink 支持更新
  • Redis sink 移到内置 Sink 中,无需安装插件即可使用。

增强运维体验

新的版本重构了外部连接配置相关的 API 以实现在管理控制台上更易用的连接资源管理功能。另外一个较大的更新来自于流和规则的批量导入导出和初始化功能,方便用户进行规则的迁移。

统一资源管理

资源是数据集成的关键概念 。eKuiper 需要从源资源中接入数据然后从动作目标资源中导出处理的数据。

在管理控制台上,当创建多个规则时,以前只支持源部分的资源复用,而针对动作,即使不同规则的动作目标一致,也需要多次重复输入资源信息。本次更新后,管理控制台中突出了资源管理概念,支持在单独页面配置资源,可分别对源和目标动作连接资源单独配置,在配置好后一键测试连接可用性,并支持用户在创建规则时引用已创建好的连接资源,简化规则编写步骤。

统一的 source sink 资源配置管理页面 图1.png

统一的 source/sink 资源配置管理页面

资源配置界面可测试连接 图2.png

资源配置界面可测试连接

批量流和规则管理

新版本中提供了 REST API 和 CLI 接口,用于导入导出当前 eKuiper 实例中的所有流,表和规则定义。这样可以快速地备份规则配置或者移植配置到新的 eKuiper 实例中。导入导出的规则集为文本的 JSON 格式,可读性较强,也可以手工编辑。

此外,导出的规则集文件可命名为 init.json放置于 data 目录中。eKuiper 首次运行时将自动载入此初始规则集,从而可实现预置规则,提高分发效率。

服务管理界面增加导入导出规则集功能 图3.png

服务管理界面增加导入导出规则集功能

即将到来

下个月我们将进行 1.7.1 版本开发,主要包括 EdgeX Levski 版本的适配和 Bug 解决。此外,我们也将启动 v1.8.0 以及 Flow Editor 的开发。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/ekuiper-newsletter-202210

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
运维 大数据 网络安全
大厂案例 - 实时分析引擎
大厂案例 - 实时分析引擎
69 0
|
3月前
|
存储 SQL 分布式计算
Hologres 与阿里云生态的集成:构建高效的数据处理解决方案
【9月更文第1天】随着大数据时代的到来,数据处理和分析的需求日益增长。阿里云作为国内领先的云计算平台之一,提供了多种数据存储和处理的服务,其中Hologres作为一款实时数仓产品,以其高性能、高可用性以及对标准SQL的支持而受到广泛关注。本文将探讨Hologres如何与阿里云上的其他服务如MaxCompute、DataHub等进行集成,以构建一个完整的数据处理解决方案。
102 2
|
4月前
|
存储 SQL 算法
B端算法实践问题之Blink在实时业务场景下的优势如何解决
B端算法实践问题之Blink在实时业务场景下的优势如何解决
48 1
|
4月前
|
DataWorks 调度 数据库
实时数仓 Hologres产品使用合集之通用和计算组型有什么区别
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
5月前
|
弹性计算 负载均衡 中间件
|
6月前
|
存储 SQL BI
深入解析实时数仓Doris:介绍、架构剖析、应用场景与数据划分细节
深入解析实时数仓Doris:介绍、架构剖析、应用场景与数据划分细节
|
7月前
|
机器学习/深度学习 分布式计算 数据处理
Spark是一个基于内存的通用数据处理引擎,可以进行大规模数据处理和分析
【5月更文挑战第2天】Spark是一个基于内存的通用数据处理引擎,可以进行大规模数据处理和分析
145 3
|
7月前
|
消息中间件 运维 Serverless
使用函数计算,数禾如何实现高效的数据处理?
使用函数计算,数禾如何实现高效的数据处理?
93137 1
|
存储 数据采集 安全
阿里云实时数仓的优势
阿里云实时数仓的优势
173 1
|
7月前
|
监控 安全 大数据
Dataphin V3.10升级速览丨集成能力提升、15个应用场景、数据治理能力优化……
Dataphin V3.10升级速览丨集成能力提升、15个应用场景、数据治理能力优化……
153 0
下一篇
DataWorks