- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们计划使用 Apache Flink 和庞大的 IOT 设置。客户将向我们发送某种结构化传感器数据(如sensor_id、sensor_type、sensor_value、timestamp)。我们无法控制每个客户何时发送这些数据(很可能是实时发送),但我们无法保证。我们将所有事件存储在 RabbitMQ/Kafka 中。更新:我们可以假设每个传感器的事件按顺序发生。
在开始实现可能的流媒体管道之前,我们对解决以下挑战的解决方案感兴趣:
我们将所有原始传感器数据存储到 Cassandra 中。此外,我们希望通过sensor_id在多个时间窗口(例如15秒、1分钟、15分钟、1小时、1天)上聚合传感器数据。使用 Flink 流有效实现所需输出的推荐方法是什么?
正如已经提到的,我们无法控制何时
发送数据。例如,客户可能会遇到网络故障,因此数据可能会延迟到达。建议如何处理这个问题?如果我们只能通过sensor_id保证良好的水印(因为每个客户都有自己的时间/问题/故障),我们如何使用水印?我们可以添加一些允许的延迟(例如 6 - 12 小时左右),这可以通过内存窗口存储中的 flink 进行管理吗?允许迟到之后会发生什么?我们是否应该将非常晚的数据存储到另一个kafka主题中并连续进行批处理?最后,一些客户上传带有收集的传感器数据的 csv 文件。这也能指导批处理方法吗?
当某些客户由于传感器配置错误(因为我们无法控制它)向我们发送遥远的 future 数据时,流会发生什么?
我们对您的建议感到好奇。谢谢。
最佳答案
这是很多问题。我会尽力一一回答:
您可以构建级联窗口运算符的数据流,并在每个窗口后 fork (以发出或进一步处理)结果。
Input -> window(15 secs) -> window(1 min) -> window(15 min) -> ...
\-> out_1 \-> out_2 \-> out_3
问题似乎在于某些数据可能“非常”晚到达,而不是数据仅按每个键的顺序排列。目前无法使用每个键的水印。因此,所有事件的“逻辑时钟”都是相同的。 Flink 允许的延迟定义了状态等待延迟到达的数据的时间长度。如果数据延迟到达(在水印之后)但在允许的延迟范围内,则相应的状态仍然可用并计算更新。如果事件太迟(晚于允许的迟到),则状态将被丢弃,事件也会被丢弃。允许的高延迟意味着需要保留更多状态。不过,这个问题原则上可以通过横向扩展来解决。进入专用 Kafka 主题的最新数据的处理也可以使用 Flink 完成。此外,周期性文件可以使用流处理器更好地连续处理。批处理解决方案需要处理跨文件的数据(外部化状态处理)、作业调度、错误处理……
使用 Flink 的水印机制,算子总是转发其最高水印(时间不能倒退),但将其水印计算为从所有输入 channel 接收到的最小水印。因此,除非您有所有 channel 的 future 数据,否则应该没问题。 future 的数据将作为状态放置,并在时间到达“ future ”时进行计算。这意味着,您不会丢失数据,但可能需要等待相当长的时间才能处理数据。
<小时/>根据您的描述,我会考虑将聚合实现为键控流上的有状态 FlatMap 运算符。鉴于每个传感器的数据按顺序到达,您可以在 FlatMap(或一系列 FlatMap,每个时间间隔一个)中进行必要的聚合。
这里的一个挑战是,您不知道何时关闭聚合,直到您看到晚于聚合间隔的事件。在具有全局有效水印的流中,即使没有接收到特定键的事件,时间也会提前(并且窗口关闭)。
另一个问题是在传感器被移除时状态的移除。这不会被自动检测到。也许可以使用特殊的标记记录来触发状态清理。
关于real-time - Apache 弗林克 : Multiple Window Aggregations and Late Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40465335/
刚刚收到一条错误消息,内容为“union __anonymous 只能是聚合的一部分”。我对此并不感到困惑,因为我正在尝试一些我知道不应该起作用的东西。 但这让我想知道 D 中“聚合”的确切定义是什么
我最近在研究ES,发现可以达到几乎相同的结果,但是对于这两者之间的 DIFFERENCE ,我不清楚。 "Filter then Aggregation" POST kibana_sample_dat
给定用户和订单表,我需要计算在注册日期后的第二天首次下单的用户。 我设法通过以下查询列出了此类用户: SELECT users.first_name as first_name, users.
我有我的文档,它们包含嵌套的“事件”(如网站上的点击)文档。 现在我想计算 name=x 的嵌套事件和 name=y 的嵌套事件之间的比率 这是我的查询: curl -XGET http://192.
在我的项目中,我发现需要以分层方式打破我的聚合,使用顶级根级别聚合,以确保根级别的规则一致性,然后我的根下的对象可以分组为各种聚合。在计算根级聚合的完整性时,根验证自己的规则,然后委托(delegat
我想通过 MongoTemplate 执行的代码: { $merge: { into: 'someCollection', on: "_id",
在过去的两周里,我一直在研究DDD,而真正令我难忘的一件事是聚合根如何包含其他聚合根。从存储库中检索聚合根,但是如果一个根包含另一个根,该存储库是否具有对另一个存储库的引用,并要求其构建子根? 最佳答
我对如何设计聚合有疑问。 我有Company , City , Province和 Country实体。其中每一个都需要是其自身聚合的聚合根。 City , Province和 Country实体在整
我对如何设计聚合有疑问。 我有Company , City , Province和 Country实体。其中每一个都需要是其自身聚合的聚合根。 City , Province和 Country实体在整
我目前正在开发 DDD 应用程序,我对如何处理似乎必须从另一个聚合根访问聚合根的场景感到困惑。这是我的边界上下文的概述: 用户可以加入该站点并就他们感兴趣的主题创建帖子。他们还可以创建群组并针对他们创
我正在用 reSolve 做我的第一个项目,但在 DDD、ES 和 CQRS 方面的经验有限。所以,也许有一个非常简单的解决方案,但我还没有找到。 我的问题:在我的项目中,一个聚合的状态(订单状态)实
https://howtoprogram.xyz/2017/02/18/using-group-apache-cassandara/ 我试图在 azure cosmos cassandra db 中执
使用 Siddhi 3.0.3 作为 Java 库。 我通过扩展 AttributeAggregator 类开发了自定义聚合函数,并且在调用 processRemove() 方法后我看到了一些奇怪的行
我正在尝试对一个公司拥有许多团队的问题进行建模。有一条业务规则“每个公司的团队名称必须是唯一的”。然而,团队还有许多其他行为,例如加入。此外,一个团队可以有许多报告 - 它们维护对Team.Id的引用
我正在尝试将总计的结果相加并将其减去总计,但我看到以下错误: 想象一下这样的事情 第一个子查询:1 3 5 7第二个子查询:2 4 6 总计:(1+3+5+7) - (2+4+6) = 4 这是我的查
我有以下 DDD 场景,分为以下聚合: 用户, friend (用户协会), 文件(供用户上传), 图库(文件分组), 消息(用户通信), 群组(用户可以创建,其他成员可以加入), GroupMess
这个问题之前已经讨论过,但没有一个答案能解决我的具体问题,因为我正在处理内部和外部选择中的不同 where 子句。该查询在 Sybase 下执行得很好,但在 SQL Server 下执行时会出现本文标
上下文 我使用 Azure 门户创建了一个流作业,该门户使用每日 TUMBLINGWINDOW 聚合数据。下面附上了一个代码片段,修改自 docs ,这显示了类似的逻辑。 SELECT DAT
我正在执行以下查询 SELECT DISTINCT n.nid AS entity_id FROM node n INNER JOIN og_membership om ON n.nid=om.eti
我的各种 docker 容器都导出 prometheus 指标,但是我们的 prometheus 安装只需要从一个端点提取所有指标。不幸的是,这无法更改。因此,我需要通过安装普罗米修斯来收集所有指标。
我是一名优秀的程序员,十分优秀!