streaming - 流数据复杂事件处理文件和相当长的周期
问题描述
我的挑战:
- 我们每天都会收到大约 200.000 条记录的文件。我们将文件保留大约 1 年,以支持重新处理等。
- 为便于讨论,假设它是某种持久的履行过程,具有与记录相关的供应 ID。
- 我们需要在这些文件中识别灵活的模式,并触发事件
- 典型的问题是:
- 如果记录 A 后面跟着记录 B 后面跟着记录 C,并且所有记录都发生在 60 天内,则触发事件
- 如果找到记录 D 或记录 E,但记录 F 在 30 天内没有出现,则触发事件
- 如果同时找到记录 D 和记录 E(无论顺序如何),然后在 24 小时内...,然后触发事件
- 某些模式需要在 DB/NoSql 中查找或连接以获取其他信息以选择记录或放入事件中。
- “选择记录”可以是简单的“field-A equals”,也可以是“field-A in []”或“filed-A match”或“func identify(field-A, field-B)”
- “天”也可能是“小时”或“上个月”。因此比“天”更灵活。通常我们在记录中有一些日期/时间戳。最大值目前是“6 个月内”(在设置阶段取消)
- 创建的事件(最好是 JSON)需要包含来自所有记录的数据,这些记录是选择过程的一部分。
- 我们需要一种允许灵活更改(添加、修改、删除)模式的方法,可选择重新处理输入文件。
关于如何优雅地解决问题的任何想法?可能是一些 python 或 java 框架,或者任何公共云解决方案(AWS、GCP、Azure)是否特别好地解决了问题空间?
非常感谢你的帮助
解决方案
经过一些讨论和阅读后,我们将首先尝试使用 FlinkCEP 库的 Apache Flink。从文档和博客条目来看,它似乎能够完成这项工作。这似乎也是 AWS 的选择,在他们的 EMR 集群上运行。我们没有在 GCP 或 Azure 上找到任何提供这些功能的托管服务。当然,我们总是可以自己部署和管理它。不幸的是,我们没有找到 Python 框架
推荐阅读
- shell - 验证后使用 curl 下载文件
- api - Twitter API 按关键字获取列表标签
- javascript - Firebase:如何获取数据
- javascript - 让用户修改 Chrome 扩展的 manifest.json 内容的编程方法
- mongodb - Mongo Json Schema Validator AnyOf 不工作
- kubernetes - 如何为具有 LoadBalancer 的 Spring SCDF Stream 应用静态 IP(在 Kubernetes 中)
- tomcat - 如何使用Tomcat允许多个IP地址?
- pandas - 用此列中已存在的另一个值填充 nan 值
- python-3.x - python - 如何在Python-Tkinter中连续输入字母的搜索框带来数据?
- jakarta-mail - 有没有办法让 Google Cloud Run 传递我的 Content-Type?