- 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/
路过this tutorial在 Riverpod 上使用此代码会出现错误 Unexpected text 'late' class Clock extends StateNotifier { C
我需要一个 knockout 计算函数来直接执行,但它看起来更像是 knockout 对可计算对象进行排队并在需要时执行。有没有办法(除了不使用 knockout 之外)立即执行? 我单步执行了我的代
我有这段代码: [contenteditable]:hover, [contenteditable]:focus { background: #D7D7FF;
我没有找到这方面的任何信息。可能是因为我的方法不正确。 我将我的图像绝对定位在使用全窗口宽度的 div 下。我正在使用 margin-left: 30%,因此图像始终位于距左边框 30% 的位置。其他
我正在尝试制作一个响应式单选按钮网格,其左侧带有标签“列”。使用下面的 HTML 和 CSS,使窗口变窄最终会导致 radio 按预期换行到两列,然后是一列。但是,直到他们的大部分文本都在屏幕右侧之外
我有一个多 View 进程,用户正在输入数据,并且我在整个过程中的每一步都将其保存到模型类属性中。 我使用 textFieldDidEndEditing 检查输入是否有效,如果有效,则保存输入的数据。
Dart 有“late variables”,swift 有“Implicitly Unwrapped Optionals”。 Python 有类似的东西吗? 这意味着,像 myvar: Late[s
我有以下可敬的 perl 脚本 x.pl: #!/usr/bin/env -S perl -Mstrict -wp s/a/b/; 如果我用 ./x.pl 或 perl x.pl 运行它,它会用 To
我现在正在尝试 NNBD,我想知道您是否可以使用新关键字 late和 final一起。 据我了解,late属性可以在任何地方设置。您基本上是在告诉分析器使用时它不会为空。 我认为在某些情况下这有点危险
我正在尝试为 Excel 中的加载项编写一些代码,该加载项从 SQL Server 获取一些数据。代码本身运行完美,但不知何故有些东西被损坏了。 代码似乎可以正常工作几次,然后突然触发 Excel 崩
This维基百科指出: Since the specific type of a polymorphic object is not known before runtime (in general)
处理许多需要在运行断言之前导航到特定位置的测试用例的最佳方法?例如一个流程有5个步骤,一个测试用例需要测试第5步的一部分,我该如何设置?在这个测试用例中调用前面步骤的测试用例方法,并对所有测试步骤 5
请不要误解我的“后期绑定(bind)”,我不是指通常的运行时后期绑定(bind),我指的是别的意思,找不到更好的词来形容它: 考虑到我正在为一些需要将这些值与比较器进行比较的值类型 V 处理容器(或类
我想找出 map task 的进度。如果有人可以帮助我,那就太好了!谢谢!! 最佳答案 我们可以通过两种方式监控作业中 Map 和 Reduce 的进度。 首先是网络界面。 http://pdhado
这个问题在这里已经有了答案: What do lambda function closures capture? (7 个答案) Creating functions (or lambdas) in
我是 android 的新手,我正在使用 genymotion 模拟器,但突然我在 log cat 中遇到了延迟启用检查问题,我的应用程序崩溃了。我尝试在其他模拟器上运行它,但在 log cat 中仍
1. 需求描述 有订单数据,格式为: (订单ID,用户ID,时间戳/事件时间,订单金额) 要求每隔5s,计算5秒内,每个用户的订单总金额 并添加Watermaker来解决一定程度上的数据延迟和数据乱
在 kotlin 中,我们可以检查 'late' 类型变量是否像下面这样初始化 lateinit var file: File if (this::file.isInitialized) { .
这是来自英尺米转换器的代码示例。我的问题:它不会更新当前输入,例如:如果 JTextField 中的文本是“50”,则 textField.getText() 仅给出字符串“5”,因此 双结果将是5.
我正在 Flink 中进行实时流处理,其中 Kafka 是消息队列。我正在应用 120 秒的 EventTimeSlidingWindow。和1秒的幻灯片。我还在事件时间的每一秒插入水印。 我担心的是
我是一名优秀的程序员,十分优秀!