日志服务数据加工最佳实践: 从其他logstore拉取数据做富化

概述

使用全局富化函数做富化时, 需要传递一个字典或者表格结构做富化. 参考构建字典与表格做数据富化的各种途径比较. 
本篇介绍从使用资源函数res_log_logstore_pull从其他logstore拉取数据的做富化的详细实践.关于res_log_logstore_pull的参数说明, 参考这里. 该语法目前支持两种模式去logstore拉取数据,一种是拉取指定时间间隔内的logstore 的数据内容,另外一种是不设置结束时间,持续的拉取目标logstore内容

背景

这里我们有两个logstore,一个是存储个人信息的source_logstore,一个是酒店存储客人入住信息的target_logstore ,我们现在将酒店的入住信息拿来做富化。
注意: 这里采用pull_log接口拉取数据, 富化的logstore并不依赖索引.

个人信息 source_logstore

topic:xxx
city:xxx
cid:12345
name:makitopic:xxx
city:xxx
cid:12346
name:vickytopic:xxx
city:xxx
cid:12347
name:mary    

酒店入住信息logstore

time:1567038284
status:check in
cid:12345
name:maki
room_number:1111time:1567038284
status:check in
cid:12346
name:vicky
room_number:2222time:1567038500
status:check in
cid:12347
name:mary
room_number:3333time:1567038500
status:leave
cid:12345
name:maki
room_number:1111

基本语法

res_log_logstore_pull(endpoint,ak_id,ak_secret,project,logstore,fields,from_time=None,to_time=None,fetch_include_data=None,fetch_exclude_data=None,primary_keys=None,delete_data=None,refresh_interval_max=60,fetch_interval=2):

具体的参数说明请参考res_log_logstore_pull,需要注意的地方是,res_log_logstore_pull 是一个单独的语法,只负责从目标logstore 拉取数据下来,本身自己并没有做任何富化的操作,所以请不要单独使用res_log_logstore_pull语法,结合e_table_map和e_search_table_map语句一起使用才是有意义的,本篇也会结合e_table_map和e_search_map_table的使用给出一些例子进行演示。

场景1: 获取指定时间内所有的数据

注意: 这里的时间是日志获取时间.

DSL编排语法

res_log_logstore_pull(..., ["cid","name","room_number"],from_time=1567038284,to_time=1567038500)

获取到的数据

#这里我们的语法中 field 填入了 cid,name,room_number 三个字段,,并且指定了时间范围,将会获取这个时间范围内的logstore的所有数据的这三个字段的值cid:12345
name:maki
room_number:1111cid:12346
name:vicky
room_number:2222cid:12347
name:mary
room_number:3333cid:12345
name:maki
room_number:1111

场景2: 设置黑白名单参数来过滤拉取的数据

1.DSL 编排语法(只设置白名单)

# 设置白名单,只有 room_number 值等于 1111的的数据会被拉去下来
res_log_logstore_pull(..., ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_include_data="room_number:1111")

获取到的数据

# 设置了 ferch_include_data 白名单,只有包含 room_numver:1111的数据会被拉去下来,其他数据不会被拉取。status: check in
cid:12345
name:maki
room_number:1111status:leave
cid:12345
name:maki
room_number:1111

2.DSL 编排语法(只设置黑名单)

res_log_logstore_pull(..., ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="room_number:1111")

获取到的数据

# 设置黑名单 fetch_exclude_data 当数据包含 room_number:1111的时候丢弃这条数据。
status:check in
cid:12346
name:vicky
room_number:2222status:check in
cid:12347
name:mary
room_number:3333

3.DSL编排语法(同时设置黑白名单)

res_log_logstore_pull(..., ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="status:leave",fetch_include_data="status:check in")

获取到的数据

# 黑白名单同时存在的情况下,优先进行黑名单数据的匹配,这里我们填入的是 status:leave的值,当数据包含status:leave的值时候,数据会被直接丢弃,而后匹配白名单,白名单我们填入的是 status:check in 当数据包含 status: check in 的值时候,该数据才会被拉取下来.
status:check in
cid:12345
name:maki
room_number:1111status:check in
cid:12346
name:vicky
room_number:2222status:check in
cid:12347
name:mary
room_number:3333

场景3: 开通持续拉取目标logstore 数据

DSL编排语法

如果目标logstore 的数据是持续写入,我们需要持续的去拉取时候,设置 to_time 参数为None 就可以,同时可以设置fetch_interval 设置拉取的时间间隔,和refresh_interval_max 当拉取遇到错误的时候退火重试的最大时间间隔

res_log_logstore_pull(..., ["cid","name","room_number","status"],from_time=1567038284,to_time=None,fetch_interval=15,refresh_interval_max=60)
# 需要注意的是,在持续拉取的过程中,如果遇到错误,服务器会一直退火重试,直到成功为止,不会停止数据加工进程。

场景4: 开启主键维护拉取的目标logstore数据(暂时不推荐)

注意事项

目前该功能仅限使用所有数据存储在logstore的同一个shard中,所以暂时不推荐使用该功能。

背景

以我们的个人信息logstore 和 酒店信息logstore的数据进行举例,因为logstore和数据库不同,logstore中的数据只能写入,无法删除,所以有的时候我们希望匹配的时候将已经删除的数据不要进行匹配,这时候就需要开启主键维护功能。

需求演示

现在我们想拉取酒店信息logstore中,所有入住还没有离开的客人信息,当status=leave的时候,表示客人已经离开酒店,所以不需要将该信息进行拉取。

DSL编排语法

res_log_logstore_pull(..., ["cid","name","room_number","status","time"],from_time=1567038284,to_time=None,primary_keys="cid",delete_data="status:leave")

得到的数据

## 可以看到 name为maki 的客人的最后更新status为leave ,已经离开酒店,所以并没有将 maki的数据拉取下来,
time:1567038284
status:check in
cid:12346
name:vicky
room_number:2222time:1567038500
status:check in
cid:12347
name:mary
room_number:3333

注意

需要注意的是 primary_keys 目前只支持设置单字符串,这个需要设置logstore数据中 值为唯一的字段,比如样例中的cid , 类似数据库的唯一主键,并且当设置primary_keys的时候,delete_data 也必须不为 None,这样才有意义。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

导入Oracle 数据库镜像,创建Oracle虚拟机_01

文章目录1. 创建虚拟机,选择镜像2. 调整内存大小3. 调整处理器大小1. 创建虚拟机,选择镜像 2. 调整内存大小 3. 调整处理器大小 接下一篇:plsql连接 oracle instantclient_11_2 本地机器不安装oracle_02 https://gblfy.blog.csdn.net/article…

阿里技术专家详解 DDD 系列- Domain Primitive

导读:对于一个架构师来说,在软件开发中如何降低系统复杂度是一个永恒的挑战,无论是 94 年 GoF 的 Design Patterns , 99 年的 Martin Fowler 的 Refactoring , 02 年的 P of EAA ,还是 03 年的 Enterprise …

别傻了,90%的开发者都没有做好它

上周末和在北京的哥们国仔涮火锅,席间聊起了最近面试的经历。他说想换工作的原因很简单,就是要涨工资,原来的公司呆了两年多,薪资浮动不超过 500 元。而身边跳槽的那些同事,薪资都已经是自己的 2 倍了。在准备面试的过…

是真“开发者”,就来一“测”到底!

阿里云开发者虚拟勋章 云时代是开发者的天下! 云让稳定、安全、高效的计算能力得到普惠,服务于广大开发者的同时,也对开发者不断学习、掌握技术知识提出了更高的要求。 阿里云推出的开发者学测服务,通过简单、便捷的形式&#x…

plsql连接 oracle instantclient_11_2 本地机器不安装oracle_02

接上一篇:导入Oracle 数据库镜像,创建Oracle虚拟机_01 https://blog.csdn.net/weixin_40816738/article/details/118115668 文章目录一、本地安装二、instantclient_11_2配置声明:(本地环境不需要安装oracle客户端) 一、本地安装 …

结构化数据存储,如何设计才能满足需求?

阿里妹导读:任何应用系统都离不开对数据的处理,数据也是驱动业务创新以及向智能化发展最核心的东西。数据处理的技术已经是核心竞争力。在一个完备的技术架构中,通常也会由应用系统以及数据系统构成。应用系统负责处理业务逻辑,而…

触发死锁怎么办?MySQL 的死锁系列:锁的类型以及加锁原理了解一下!

来源 | 程序员历小冰责编 | Carol封图 | CSDN 付费下载于视觉中国疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发生了死锁现象:ERROR 1213(40001): Deadlock found when trying to getlock; t…

本地psql连接远程Oracle虚拟机_03

接上一篇:plsql连接 oracle instantclient_11_2 本地机器不安装oracle_02 https://gblfy.blog.csdn.net/article/details/118115893 文章目录1. 启动虚拟机2. 登录虚拟机3. 开启网络4. 获取ip地址5. ssh工具连接6. 查看Oracle监听运行状态7. 本地监听添加连接串8. p…

后端程序员必备:书写高质量SQL的30条建议

来源 | 捡田螺的小男孩责编 | Carol封图 | CSDN 付费下载于视觉中国本文将结合实例demo,阐述30条有关于优化SQL的建议,多数是实际开发中总结出来的,希望对大家有帮助。1、查询SQL尽量不要使用select *,而是select具体字段。反例子…

PL/SQL Developer 13.0设置中文

PL/SQL Developer 13.0设置中文 PL/SQL Developer 13.0和之前的版本有些不一样Tools下找不到preferences,因为位置改变了,不在Toos下,它在最上面 然后就是User Interface -> Appearance -> Language 选择 Chinese.lang->Apply->ok就好了

ETL异构数据源Datax_数据准备_03

文章目录一、Oracle数据库准备1. 初始化表结构2. 生成测试数据二、使用docker创建mysql2.1. 构建mysql容器2.1. 创建datax数据库2.3. 初始化表结构一、Oracle数据库准备 1. 初始化表结构 --删除otbs1 drop table otbs1;--创建otbs1表 CREATE TABLE otbs1 ( IDNO NUMBER, COL1…

红点中国、红杉中国联合领投,WakeData惟客数据完成1000万美元B轮融资

日前,企业数字化升级服务商WakeData惟客数据宣布完成由红点中国和红杉中国联合领投,IDG资本跟投的1000万美元B轮融资。 据了解,本轮融资由奇迹资本担任独家财务顾问。这是WakeData成立以来的第三次融资,此前两轮分别是由IDG资本领…

bash: telnet: command not found... bash: telnet: 未找到命令...

yum install -y telnet-server.x86_64 yum install -y telnet.x86_64telnet 192.168.223.128 1521

用大白话彻底搞懂 HBase RowKey 详细设计

来源 | 且听_风吟来源 | CSDN 博客,责编 | Carol封图 | CSDN 付费下载于东方 IC前言RowKey作为HBase的核心知识点,RowKey设计会影响到数据在HBase中的分布,还会影响我们查询效率,所以RowKey的设计质量决定了HBase的质量。是咱们大…

java特性和优势,cmd命令测试Java是否安装成功

java特性和优势 简单性面向对象可移植性高性能分布式动态性多线程安全性健壮性用的人十分多 Java三大版本 javaSE: 标准版javaME:嵌入式开发JavaEE:企业级开发,服务器开发 JDK,JRE,JVM JDK:Java Development Klt 开发者工具JRE:Java Run…

关于Spring AOP,除了动态代理、CGLIB,你还知道什么?

来源 | 草捏子责编 | Carol封图 | CSDN 付费下载于视觉中国Spring 作为 Java 中最流行的框架,主要归功于其提供的 IOC 和 AOP 功能。本文将讨论 Spring AOP 的实现。第一节将介绍 AOP 的相关概念,若熟悉可跳过,第二节中结合源码介绍 Spring 是…

ETL异构数据源Datax_Oracle同步MySQL(全量)_04

文章目录一、Oracle同步Mysql1. 构建json2. 执行数据同步3. 查看同步数据4. 同步数据正确性和准确性5. 同步日志分析一、Oracle同步Mysql 1. 构建json vim oracle2mysql.json{"job": {"setting": {"speed": {"channel": 3},"er…

# 学习使用计算机

冯.诺依曼体系结构 计算机软件 快捷键的使用 CtrlC 复制Ctrlv 粘贴CtrlA 全选CtrlZ 撤销CtrlS保存CtrlShiftEsc 打开任务管理器wlndows 打开菜单AltTab 切换页面AltF4 关闭窗口ShiftDelete 永久删除wlndowsR 打开运行窗口wlndowsE 打开文件资源管理器wlndowsTab 管理页面 Dos…

ETL异构数据源Datax_使用数据分片提升同步速度_05

文章目录1. 构建json,添加数据分片2. Mysql数据清除3. 数据分片前后对比1. 构建json,添加数据分片 {"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"perc…

Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL

上周六在深圳分享了《Flink SQL 1.9.0 技术内幕和最佳实践》,会后许多小伙伴对最后演示环节的 Demo 代码非常感兴趣,迫不及待地想尝试下,所以写了这篇文章分享下这份代码。希望对于 Flink SQL 的初学者能有所帮助。完整分享可以观看 Meetup 视…