SLS 数据加工全面升级,集成 SPL 语法

news2024/11/15 20:01:24

作者:灵圣

数据加工概述

在系统开发、运维过程中,日志是最重要的信息之一,其最大的优点是简单直接。不过在整个日志的生命周期里有一对很难调和的矛盾:输出和采集日志要求尽可能的简单便捷 vs 日志分析时需要数据格式化并能够按需存储。

  • 为了解决前者,保证服务的稳定和效率,提出了不同的高性能数据管道解决方案,比如阿里云 SLS 这样的云服务、还有 Kafka 这样的开源中间件。
  • 而对于后者,需要提供给下游规范化的、完整的数据,用于比如业务分析等场景,SLS 数据加工即是达成这一需求的功能。

在这里插入图片描述

如上图所示,SLS 数据加工的常见场景:

  • 规整: 这是使用频率最高的场景,比如从文本日志数据中提取出关键信息,将其转为规范化的数据。
  • 富化: 比如用户的点击数据中只包含商品 ID,在分析时需要从数据库关联起详细信息。
  • 脱敏: 随着我国信息安全相关法律的完善,对于敏感数据(比如个人信息)的处理要求越来越高。
  • 分裂: 在数据写出时,处于性能、便捷性考虑会将多条数据合并输出,在分析前则需要拆分出独立数据条目。
  • 分发: 将不同类型的数据分别写到不同的特定目标中,以供下游定制化使用。

新版数据加工提升

在这里插入图片描述

  • 集成 SPL,统一语法

    SPL 是 SLS 为日志采集、交互式查询、流式消费、数据加工等数据处理的场景,提供的统一的数据处理语法,语法细节可参考 SPL 语法 [ 1] 。新版数据加工 SPL 编写过程支持按行调试和代码提示,更接近 IDE 编码体验。

  • 性能提升 10+ 倍,大数据量、数据洪峰处理更平滑

    在处理无规则日志数据场景中,相同的处理复杂度,新版数据加工相对于旧版有 10+ 倍的性能提升,能够支撑更高的数据吞吐量。另外,通过调度系统的升级,面对平常流量上千倍的数据洪峰时,新版数据加工能够更加敏捷的实现计算并发扩展,尽可能减少洪峰带来的积压。

  • 成本更优,降至旧版 1/3

    通过数据加工服务的技术迭代升级,新版数据加工提供了更具优势的使用成本,仅为旧版数据加工的 1/3。所以,在需求场景已经支持时,推荐使用数据加工(新版)。

集成 SPL、统一语法

新版数据加工原理

新版数据加工通过托管实时数据消费的任务,结合日志服务 SPL 规则消费功能,实现对日志数据的实时加工处理,原理如下图。

在这里插入图片描述

  • 调度机制

    对每一个加工任务,加工服务的调度器会启动一个或多个运行实例,并发执行数据处理,每个运行实例扮演一个消费者角色消费 1 个或者多个源 Logstore 的 Shard。调度器根据运行实例资源消耗、以及处理进度决定运行实例数目,实现弹性并发。单个任务的并发上限为源 Logstore 的 Shard 数量。

  • 运行实例

    根据任务的 SPL 规则和目标 Logstore 等配置信息,从数据加工服务分配的 Shard 中,使用 SPL 规则消费源日志数据,将基于 SPL 规则处理后的结果分发写入对应的目标 Logstore。运行实例运行过程中,自动保存 Shard 的消费点位,确保任务停止重启时,从断点处继续消费。

SPL 语法对比旧版 DSL

相对于数据加工(旧版)DSL 语言,日志服务 SPL 语法提升了易用性,具体如下:

  1. 数据加工(旧版)DSL 语法作为 Python 语法子集,需要函数式编程,使用过程中存在较多语法符号冗余。相较而言,日志服务 SPL 语言是类 Shell 指令式语法,在最大程度减少语法符号的冗余。如下案例:

    • 旧版本使用函数 v 引用字段值 v(“field”),SPL 则直接引用字段,比如 | where field=‘ERROR’。
    • 旧版本函数调用 func(arg1, arg2),转为 SPL 指令 | cmd arg1, arg2,编写更简洁。
  2. SPL 语言支持处理过程中临时字段类型保持,数据类型转换 [ 2] ;与之相反,数据加工(旧版)DSL 的定义中,字段值固定为字符串类型,类型转换的中间结果不支持保留。比如,如下 DSL 脚本,需两次调用 ct_int 函数:

e_set("ms", ct_float(v("sec"))*1000)
e_keep(ct_float(v("ms")) > 500)

对应的 SPL 逻辑则更为简洁,无需两次转换类型,参考如下:

| extend ms=cast(sec as double)*1000
| where ms>1024
  1. 另外,SPL 语言可以无缝使用日志服务 SQL 函数,无需额外的理解和学习成本,SPL 所支持的 SQL 函数参考 SQL 函数概览 [ 3]

数据加工 SPL 代码调试

调试菜单

数据加工(新版)SPL 调试菜单参考在这里插入图片描述
,菜单按钮定义如下:

  • 运行按钮: 完整运行编辑框中的 SPL 规则。
  • 调试按钮: 开启调试模式,并执行运行至第一个断点,开启后可以执行按行、或者断点调试。
  • 下个断点按钮: 调试运行至下一个断点。
  • 下一行按钮: 调试运行至下一行。
  • 停止调试按钮: 停止当前调试过程。

代码编辑框的行号前的空白区域为断点区域,在断点区域单击鼠标,即可在单击点对应的行添加调试断点,效果如下图。单击已添加的调试断点,即可将其移除。

在这里插入图片描述

调试过程
  1. 准备测试数据和编写 SPL 规则。

  2. 在需要调试的行添加断点。

  3. 单击调试按钮,开启调试模式,如下图。黄色背景行表示当前暂停的位置(语句未执行),蓝色背景行表示已经执行的 SPL 语句。

在这里插入图片描述

  1. 在加工结果标签页中查看运行结果是否满足需求。

    • 如果符合需求:进入第 5 步,继续调试运行。
    • 否则,单击停止调试按钮,回到第 1 步,修改 SPL 规则,重新开始调试过程。

在这里插入图片描述

持续迭代升级

接下来,新版数据加工将持续进行迭代升级,这里我们仅聊一下近期即将推出的两个升级。

1. 支撑完备的数据处理场景

目前新版数据加工专注于无规则数据处理场景,即偏计算型,对于数据流转场景暂未覆盖,比如数据分发至多目标或动态目标、维表富化、IP 解析、跨地域同步数据。

接下来,新版数据加工将着重支持这些场景,并通过架构升级,提供更稳定、更易用的服务,比如跨区域同步的加速能力、基于数据集的分发等。

2. 旧版数据加工任务无缝升级

对于线上在运行的旧版数据加工任务,需要应用如上所述的新版本提升,数据加工服务将从两个技术角度支撑已有任务的原地升级:

第一,数据加工服务保证数据的完整性,自动将当前的数据消费点位迁移至新版数据加工,升级后将从该点位继续消费数据。第二,基于 AST 语法树解析,自动翻译旧版数据加工任务的 DSL 脚本,至同等数据处理逻辑的 SPL。

相关链接:

[1] SPL 语法

https://help.aliyun.com/zh/sls/user-guide/spl-syntax/

[2] 数据类型转换

https://help.aliyun.com/zh/sls/user-guide/spl-general-reference?#9f3d943aa1ceb

[3] SQL 函数概览

https://help.aliyun.com/zh/sls/user-guide/function-overview

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1950624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SpringBoot】3 项目配置及部署

配置文件配置 将 application.properties 改为 application.yml ,写法不一样,本人比较习惯用 yaml 格式。 配置项目名称和项目端口号。 application.yml server:port: 8888 spring:application:name: system配置外置 Servlet 容器 如果要在 Tomcat 容器…

数据结构·AVL树

1. AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果存数据时接近有序,二叉搜索将退化为单支树,此时查找元素效率相当于在顺序表中查找,效率低下。因此两位俄罗斯数学家 G.M.Adelson-Velskii 和E.M.Landis 在1962年发明了一种解…

音视频入门基础:WAV专题(1)——使用FFmpeg命令生成WAV音频文件

在文章《音视频入门基础:PCM专题(1)——使用FFmpeg命令生成PCM音频文件并播放》中讲述了生成PCM文件的方法。通过FFmpeg命令可以把该PCM文件转为WAV格式的音频文件: ./ffmpeg -ar 44100 -ac 2 -f s16le -acodec pcm_s16le -i aud…

「Ant Design」Antd 中卡片如何完全不展示内容区域、按需展示内容区域、不展示标题

前言 下面是默认的 Antd 卡片&#xff0c;由以下区域组成 处理 Antd 的 Card 展示形式大致有下面三种 卡片完全不展示内容区域 const App () > (<Card title"Default size card" extra{<a href"#">More</a>} style{{ width: 300 }}b…

工厂数字化转型,该如何建设数字孪生车间?

在工业4.0的浪潮下&#xff0c;数字化转型已成为工厂升级的必然趋势&#xff0c;而数字孪生技术的引入则为这一转型注入了强大动力。智汇云舟作为数字孪生行业头部企业和视频孪生技术首倡者&#xff0c;以创新的视角和前沿的技术&#xff0c;为数字工业建设助力&#xff0c;给众…

《昇思25天学习打卡营第2天|张量》

张量其实就是矩阵&#xff0c;在python中主要是使用numpy这个库来操作&#xff0c;然后再mindspore中一般使用tensor对象作为张量的载体 张量如果维度只有二维的话可以简单理解为数据库中的表&#xff0c;但是如果是3维4维主要是在列表中增加列表项比如 【 【1&#xff0c;1】…

C++ //练习 15.28 定义一个存放Quote对象的vector,将Bulk_quote对象传入其中。计算vector中所有元素总的net_price。

C Primer&#xff08;第5版&#xff09; 练习 15.28 练习 15.28 定义一个存放Quote对象的vector&#xff0c;将Bulk_quote对象传入其中。计算vector中所有元素总的net_price。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块&am…

【C++笔试强训】day01

数字统计 思路 用%10取出个位的数字&#xff0c;用/10迭代。 代码 #include <iostream> using namespace std;int main() {int l, r, res 0;cin >> l >> r;for (int i l; i < r; i){int x i;while (x){if (x % 10 2) res;x / 10;}}cout << r…

AttributeError: ‘WandbLogger‘ object has no attribute ‘bbox_interval‘

一、问题描述 跑yolov5时&#xff0c;运行代码出现以下报错 AttributeError: WandbLogger object has no attribute bbox_interval 二、问题原因 可能是版本的问题&#xff0c;需要把wandb关闭 三、解决方法 在路径 \yolov5\utils\loggers 文件夹下的 _init__.py文件中19…

【MySQL】记录MySQL加载数据(LOAD DATA)

MySQL LOAD DATA 一、背景二、模拟生成用户信息三、加载到mysql表3.1、建表语句3.2 加载数据3.3、查看结果 一、背景 现在有个需求是将用户信息存入student.data文件中&#xff0c;在现在load到数据库中 二、模拟生成用户信息 假设用户信息&#xff0c;包含姓名&#xff0c;…

使用PyTorch导出JIT模型:C++ API与libtorch实战

PyTorch导出JIT模型并用C API libtorch调用 本文将介绍如何将一个 PyTorch 模型导出为 JIT 模型并用 PyTorch 的 CAPI libtorch运行这个模型。 Step1&#xff1a;导出模型 首先我们进行第一步&#xff0c;用 Python API 来导出模型&#xff0c;由于本文的重点是在后面的部署…

AR 眼镜之-蓝牙电话-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 蓝牙电话 来电铃声 1. &#x1f531; 技术方案 1.1 结构框图 1.2 方案介绍 1.3 实现方案 步骤一&#xff1a;屏蔽原生蓝牙电话相关功能 步骤二&#xff1a;自定义蓝牙电话实现 2. &#x1f4a0; 屏蔽原生蓝牙电话相关功能 …

深入解读 Java 中的 `StringUtils.isNotBlank` 与 `StringUtils.isNotEmpty`

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…

【支持语言模型和视觉语言模型的推理引擎sglang】

介绍 sglang是一个AI推理引擎&#xff0c;是一个专门为大语言模型和视觉语言模型设计的高效服务框架。 就像F1赛车需要顶级发动机一样&#xff0c;大语言模型也需要高效的推理引擎来发挥潜力。 而sglang正是这样一个性能怪兽。 根据LMSys组织的官方公告&#xff0c;最新的s…

Docker(十)-Docker运行elasticsearch7.4.2容器实例以及分词器相关的配置

1.下载镜像 1.1存储和检索数据 docker pull elasticsearch:7.4.2 1.2可视化检索数据 docker pull kibana:7.4.22.创建elasticsearch实例 创建本地挂载数据卷配置目录 mkdir -p /software/elasticsearch/config 创建本地挂载数据卷数据目录 mkdir -p /software/elasticse…

【React】JSX:从基础语法到高级用法的深入解析

文章目录 一、什么是 JSX&#xff1f;1. 基础语法2. 嵌入表达式3. 使用属性4. JSX 是表达式 二、JSX 的注意事项1. 必须包含在单个父元素内2. JSX 中的注释3. 避免注入攻击 三、JSX 的高级用法1. 条件渲染2. 列表渲染3. 内联样式4. 函数作为子组件 四、最佳实践 在 React 开发中…

20240724----idea的Java环境卸载与安装

1.删除旧有的jdk https://blog.csdn.net/weixin_42168713/article/details/112162099 &#xff08;补充&#xff1a;我把用户变量和java有关的都删了&#xff09; 2.下载新的jdk百度网盘链接 链接&#xff1a;https://pan.baidu.com/s/1gkuLoxBuRAtIB1IzUTmfyQ 提取码&#xf…

第二代欧洲结构设计标准简介

文章目录 0、背景1、总览2、更新及变化2.1 抗震2.2 地基基础2.3 防火 0、背景 本篇文章来自微信公众号土木吧&#xff0c;原作者李立昌&#xff08;北京鑫美格工程设计有限公司&#xff09;。对原文感兴趣的可以点击这里。 新的欧标滚滚而来&#xff0c;提前做好准备很有必要…

人工智能视频大模型:重塑视频处理与理解的未来

目录 一、人工智能视频大模型概述 1.1 定义与特点 1.2 技术基础 二、关键技术解析 2.1 视频特征提取 2.2 时空建模 2.3 多任务学习 三、应用场景展望 3.1 视频内容分析 3.2 视频编辑与生成 3.3 交互式视频体验 四、未来发展趋势 4.1 模型轻量化与移动端部署 4.2 …

前端面试项目细节重难点分享(十三)

面试题提问&#xff1a;分享你最近做的这个项目&#xff0c;并讲讲该项目的重难点&#xff1f; 答&#xff1a;最近这个项目是一个二次迭代开发项目&#xff0c;迭代周期一年&#xff0c;在做这些任务需求时&#xff0c;确实有很多值得分享的印象深刻的点&#xff0c;我讲讲下面…