问题标签 [stream-processing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
architecture - 使用来自不同来源的输入时间序列以流方式计算时间序列
我开发并维护了一个显示指标数据的 Web 应用程序。这些指标主要是来自传感器、可编程逻辑控制器等的具有常规分辨率的时间序列。其中一些时间序列是测量值(如温度等),而另一些则是使用其他时间序列作为输入的计算结果。这些措施来自不同的来源,具有不同的格式、协议和可用性延迟。它们现在都是面向批处理的,但面向流的很快就会出现。
目前,数据的导入是使用将数据存储到数据库中的 Apache Camel 完成的。然后,度量的计算由一个“自制”批处理程序完成,每次批量导入完成时 apache Camel 都会调用该程序,为该脚本提供导入时间序列的开始和结束日期以及某种要处理的命名空间只有批次关注的时间序列。
虽然这个解决方案目前有效,但由于其批量定向,它有一些缺点。我开始考虑未来改进的更好解决方案。
更准确地说,我需要一个能够通过对输入时间序列应用数学运算来生成输出时间序列的系统,事情就像
考虑到输入 (t1, t2, t3) 不能同时使用,因为它们来自不同的来源(一些来自批处理,一些来自流......)。一些计算的时间序列被用作其他一些的输入。所有这些都创建了一个依赖图。
是否有一些设计模式、工具、框架甚至“概念”可以帮助我在数据到来时以更“流式”的方式改进指标的生成/计算,抽象不同的来源并考虑依赖关系?
我查看了 apache Kafka、Flink、Spark 等框架。但我怀疑它们是否真的能满足我的需求。他们允许这样做,stream / event processing
但我不确定这是否指的是我需要做的相同类型的处理。
希望我的问题足够清楚,不容易解释。
apache-flink - Apache Flink 如何从检查点/保存点恢复状态?
我需要知道 Apache Flink 如何从检查点恢复其状态,因为在运行纯作业与从保存点恢复时,我看不出启动时间和在操作员中看到第一个事件之间有任何区别。
状态是否从检查点/保存点延迟加载?
apache-flink - Apache Flink:在动态表上构建多对一连接的最佳方法?
我有一个经常添加/更新行的资源,称为 Orders,还有一个名为 UserProfile 的资源,更新频率较低(但通常很重要)。我想对这两个资源(当前逻辑上存储为 Flink 中的动态表)执行连续连接查询,这样当 UserProfile 更新发生时,连接表会发出一个 DataStream,其中每个与该 UserProfile 关联的订单都有一个更新的 EnrichedOrder。目标是索引这些丰富的非规范化数据,以便在下游数据接收器中进行有效查询。
我的问题是,构建此连接的最佳方式是什么?具体来说,如何确保在更新 UserProfile 时丰富联接“多”端的所有订单记录,同时仍保持性能?
由于在 Flink 中不可能进行没有时间窗口的任意内部连接(可能是出于性能原因),我想也不鼓励设置过大的时间窗口。
此用例的推荐方法是什么?
java - 数据流上的 Flink sql 查询(Apache Flink Java)
我对 Apache flink 完全是菜鸟。只是想弄脏我的手。我有以下情况。
- 事件数据流
- 事件数据流
- 规则的数据流
- 根据 ruleID 组合这两个数据流
现在我有一个 tuple3 的数据流,看起来像<ruleId, Rule, Event>
. 这些规则是我想在事件上运行的 SQL 查询。
我正在研究动态表和 Flink SQL 的概念。我不确定如何进一步处理。有人可以帮我解决这个问题吗?
bash - 使用 grep 过滤行流并在其前面加上检测到的模式
在根据所选模式修改流本身时,遇到了一个关于使用 grep 过滤多个模式的棘手问题
如果我想过滤让我们说“ps -ef”输出的多种模式,我可以这样做
但是,我无法在流处理的后面判断“客户端”或“postgres:”模式是否与特定流线匹配(这对我的用例至关重要)
如果我选择使用 -o 参数,grep 会从我请求的多个模式中为我提供实际匹配的模式,但它不会打印它在其中找到模式的整个流线(我也需要)
我希望 grep (或可能是另一个工具)给我“匹配模式”+“匹配模式的行”,这样我以后可以将它作为一个流处理,知道“为什么”它首先被选中。
不太确定我可以用 grep 做到这一点是否有其他工具可以用于此?(awk、sed 等...)
对我来说非常快速和高效地完成它很重要,所以我不想开始搞乱循环和对不同 linux 可执行工具的多次调用
希望使用一个工具将其作为流处理,该工具既可以通过多个选项进行过滤,也可以告诉我它选择了哪个模式
java - Apache flink 多线程/并行执行
输入流由 JSON 对象数组格式的数据组成。每个对象都有一个名为state的字段/键,我们需要通过它来分隔输入流,请参见下面的示例
对象1->“状态”:“活动”
对象2->“状态”:“空闲”
对象 3 ->“状态”:“阻塞”
对象4->“状态”:“活动”
我们必须在收到特定状态后立即开始处理/线程,如果新状态与前一个状态相似,则继续获取数据,让前一个线程处理它,否则为新状态启动一个新线程。此外,需要在有限时间内运行每个线程,并且所有线程应该并行运行。
请建议我如何在 Apache Flink 中做到这一点。伪代码和链接会有所帮助。
apache-kafka - Kafka Streams 在处理时间窗口内排序
我想知道是否有任何方法可以使用 Kafka Streams DSL 或处理器 API 对窗口内的记录进行排序。
想象一下以下情况作为示例(任意一种,但与我需要的相似):
有一些事件的Kafka主题,比如说用户点击。假设主题有 10 个分区。消息是按键分区的,但每个键都是唯一的,所以它是一种随机分区。每条记录都包含一个用户 ID,稍后用于对流进行重新分区。
我们使用流,并将每条消息发布到另一个主题,通过它的用户 ID 对记录进行分区(通过用户 ID 重新分区原始流)。
然后我们消费这个重新分区的流,我们将消费的记录存储在本地状态存储中,窗口为 10 分钟。特定用户的所有点击总是在同一个分区中,但不保证顺序,因为原始主题有 10 个分区。
我了解Kafka Streams的窗口模型,当新记录进来时时间会提前,但是我需要这个窗口使用处理时间,而不是事件时间,然后当窗口过期时,我需要能够排序缓冲事件,并按顺序将它们发送到另一个主题。
注意:
我们需要能够使用处理时间而不是事件时间来刷新/处理窗口内的记录。我们迫不及待地等待下一次点击来提前时间,因为它可能永远不会发生。
我们需要从存储中删除所有记录,尽快对窗口进行排序和刷新。
如果应用程序崩溃,我们需要恢复(在应用程序的同一个或另一个实例中)并处理所有未处理的窗口,而无需等待特定用户的新记录出现。
我知道 Kafka Streams 1.0.0 允许在处理 API 中使用挂钟时间,但我不确定实现我需要的正确方法是什么(更重要的是考虑到上述恢复过程要求)。
apache-flink - Apache Flink:ProcessWindowFunction 不适用
我想ProcessWindowFunction
在我的 Apache Flink 项目中使用 a 。但是我在使用过程功能时遇到了一些错误,请参见下面的代码片段
错误是:
WindowedStream,Tuple,TimeWindow> 类型中的方法 process(ProcessWindowFunction,R,Tuple,TimeWindow>) 不适用于参数 (JDBCExample.MyProcessWindows)
我的程序:
我的ProcessWindowFunction
:
streaming - Opening Heron UI is very slow
When I try to open the http://myip:8889/topologies
after running heron-tracker
and heron-ui
commands, the response speed of this page is very slow even I can't open the page at all.
And the 304 response code showed as following:
When I using heron-tracker --verbose
command to run the heron-tracker. The output as following:
heorn-ui
:
What's more, I can't find LOG-FILES
of heron cluster that deployed in Aurora
, Zookeeper
and Mesos
. Can you tell me it if you know it?
And I don't know what's wrong with it? Thanks for your help!
json - jq streaming - 过滤嵌套列表并保留全局结构
在大型 json 文件中,我想从嵌套列表中删除一些元素,但保留文档的整体结构。
我的示例输入它(但真正的大到足以要求流式传输)。
所需的输出只删除了“filter_this”块的一个元素:
处理这种情况的标准方法似乎是使用 'truncate_stream' 来重构流对象,然后以通常的 jq 方式过滤这些对象。具体来说,命令:
提供对对象流的访问:
此时很容易过滤所需的对象。但是,这会从其父对象的上下文中剥离结果,这不是我想要的。
查看流式结构:
看来我需要选择所有“filter_this”行,仅截断这些行(使用“truncate_stream”),将这些行重建为对象(使用“from_stream”),过滤它们,然后将对象转换回流数据格式(使用“tostream”)加入“保持不变”行的流,这些行仍然是流格式。那时,可以重新构建整个 json。如果这是正确的方法——这对我来说似乎过于复杂——我该怎么做?或者,还有更好的方法?