问题标签 [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.
java - 在 flink 中计算总数并定期发出
我有一个关于资源的事件流,如下所示:
我正在尝试为每个资源生成统计信息(总计),所以如果我得到一个像上面这样的流,结果应该是:
现在我写了一个 ProcessFunction 来计算总数,如下所示:
从代码中可以明显看出,它将为每个事件发出一个新的 ResourceTotals,但我想每分钟发出一次每个资源的总数,而不是更频繁。
我尝试使用全局窗口和触发器(ContinuousProcessingTimeTrigger)进行试验,但无法使其工作。我遇到的问题是:
- 如何表达我想要窗口的最后一个事件?
- 如何不最终存储在该全局窗口中生成的所有 ResourceTotals?
任何帮助,将不胜感激。
apache-flink - 引导 flink 状态
我正在研究一个简单的聚合,它将给定资源上发生的事件总数相加(请参阅: 计算总数并在 flink 中定期发出)。在一些帮助下,我得到了这个工作,但现在遇到了另一个问题。
我正在尝试计算资源生命周期的总数,但我正在从保留期为 24 小时的 kinesis 流中读取事件。由于这意味着我无法访问在此之前发生的事件,因此我需要从一个每天计算一次总数的遗留(批处理)系统引导我的状态。
本质上,我想以某种方式从遗留系统引导状态(加载昨天的统计信息),然后在此基础上加入来自 kinesis 流的今天数据,并避免在此过程中重复。理想情况下,这将是一个一次性的过程,并且应用程序应该从那时起从 kinesis 运行。
如果我错过了什么,我很乐意提供更多细节。
谢谢
hadoop - Hadoop 可以做流式处理吗?
有人建议Hadoop做流式处理,并引用了Flume和Kafka作为例子。
虽然我知道它们可能具有流式处理功能,但我想知道它们是否可以与 Storm/Spark/Flink 等流处理技术处于同一联盟。Kafka 是一个“发布-订阅模型消息系统”,Flume 是一个数据摄取工具。即使它们与 hadoop 交互/集成,它们在技术上是“hadoop”本身的一部分吗?
PS:我知道有一个Hadoop Streaming是完全不同的东西。
apache-flink - Apache flink 外部 api 调用
是否可以在 apache flink 代码中调用外部 api(RESTful)。如果有可能,那么我们如何做到这一点。
我从简单的java代码调用一个api,它工作正常但是当我在apache flink中使用相同的代码时,它会抛出一个异常:
time-series - How to transform multiple unaligned time series which arrived in different interval and depends on each other
The system collects many time series data which is unaligned:
Example:
and may be also delayed or send in batch (i.e. the event time may not be equal to receive time, depends on the source)
The raw data will be up-sampling to 1 minute interval and fill missing value by linear interpolation with previous value. Then do the element-wised transformation like this:
Series 2 = Series 2 + Series 3
Series 1 = Series 1 * Series 2
so Series 1 depends on itself and Series 2. Series 2 depends on itself and Series 3.
The relationship of transformation between series can form a Directed acyclic graph (DAG). The relationship will change in runtime if user request for the change.
Currently all calculations are done instantly with Python Pandas when user retrieve the time series data. But the performance is getting worse when the volume of data increase or user selecting a wide time range.
Is there any way/tool to achieve this, such as stream or batch processing?
azure - 滑动窗口生成的事件比原始输入多
输入数据: {ticker: 'MSFT', price: 100}
查询:
窗口是SlidingWindows
和分组依据 ticker
这里的问题是我的窗口不会生成相同数量的行
我的目标是它们同时生成相同数量的行,这样我就可以将它们全部加入并创建一个输出。
那么这里的问题是什么?
谢谢
apache-flink - 如何在 Apache 的 Flink 中拆分和合并数据(向量),而不使用 windows
我需要将一个整数立方体拆分为向量,对每个向量执行一些操作(一个简单的加法),然后将向量合并回一个立方体。向量操作应该并行执行(即每个流一个向量)。多维数据集是包含 ID 的对象。
我可以将多维数据集拆分为向量并使用多维数据集 ID 创建一个元组,然后使用 keyBy(id),并为每个多维数据集的向量创建一个分区。但是,似乎我必须使用某个时间单位的窗口来执行此操作。该应用程序对延迟非常敏感,因此我更喜欢在向量到达时组合它们,也许使用某种逻辑时钟(我知道一个多维数据集中有多少向量),当最后一个向量到达时将重新组装的多维数据集发送到下游。这在 Flink 中可行吗?
下面是一个代码片段来说明这个想法:
java - Flink 中的 windowAll 算子是否会将并行化缩减为 1?
我在 Flink 中有一个流,它从源发送多维数据集,对多维数据集进行转换(将多维数据集中的每个元素加 1),然后最后将其发送到下游以打印每秒的吞吐量。
该流在 4 个线程上并行化。
如果我理解正确,该windowAll
运算符是一个非并行转换,因此应该将并行化缩减回 1,并通过将它与 一起使用TumblingProcessingTimeWindows.of(Time.seconds(1))
,将最近一秒内所有并行化子任务的吞吐量相加并打印出来。我不确定我是否得到正确的输出,因为每秒的吞吐量是这样打印的:
问题:流式打印机是打印每个线程(1、2、3 和 4)的吞吐量,还是仅选择线程 3 打印所有子任务的吞吐量总和?
当我一开始将环境的并行度设置为 1 时,env.setParallelism(1)
在吞吐量之前我没有得到“x>”,但我似乎得到了与设置为 4 时相同(甚至更好)的吞吐量。就像这个:
这是该程序的代码片段:
apache-kafka - Apache Beam over Apache Kafka 流处理
Apache Beam 和 Apache Kafka 在流处理方面有什么区别?我也在努力掌握技术和程序上的差异。
请通过您的经验报告帮助我理解。
node.js - 我们是否疯狂地将 node.js 用于具有大量内存状态的长时间运行的高性能服务器进程?
我为 X 公司工作,我们目前承诺在大多数后端系统中使用 node.js(带有类型检查器),原因有很多。我们正在充实一些非常复杂且任务关键的流式处理风格的工作,以及一些工作流管理的东西等。
其中一些依赖于复制状态机等模式,随着事件的到来建立状态。严格的一致性,需要排序,所以代码有点敏感。此外,相当多的状态会在内存中徘徊约几分钟。超高性能并不重要,但可靠性才是关键。
我来自 jvm 背景。我会更喜欢复杂的调试和分析工具,比如 yourkit、静态类型、更可调的垃圾收集器等、坚如磐石的内置 sdk 等。
用节点建立复杂的关键任务基础设施是不是很疯狂?我的直觉告诉我,就目前而言,它是一个相当不错的平台,架构/设计将一如既往地决定可靠性,而怀疑论往往反映了更多的非类型检查、es6 之前的节点概念,而不是人们(可以)今天使用。垃圾收集器缺乏详细的可调性是一个大问题吗?