数据流操作的深入解析
1. 分区状态操作
在数据流处理中, partitionBy 参数起着重要作用。它用于根据 ticker 属性的值对内部状态进行分段。例如,对于一个由 10 个元组组成的窗口,基于 ticker 属性的值对 Src 流进行解复用后,会形成多个子流,独立的聚合操作会在这些子流上进行。也就是说, Aggregate 实例会针对每个分区独立计算最近十个元组的总和。下游的 Functor 则用于计算最终的成交量加权平均价格。
分区有状态运算符的运行时支持也可以进行专门化处理。如果能保证对不同分区的协调访问,那么分区有状态运算符可以更高效地并行化。实际上,逻辑分区的子流可以物理分割成实际的流,并由多个运算符实例独立处理,只要属于同一分区的元组保持在同一流中即可。同时,运行时环境提供的容错支持也可以根据不同分区进行细化和分段。
2. 选择性和元数
非源运算符通常会在元组到达其输入端口之一时执行内部处理逻辑,处理结果可能会使运算符发出一个或多个元组。运算符的选择性和元数这两个属性决定了其接收和产生数据之间的关系。
-
选择性 :
- 固定选择性运算符 :消耗固定数量的入站元组并生成固定数量的出站元组。例如,SPL 标准工具包中的
Barrier运算符,它用于同步来自多个入站流的数据流。它每次
- 固定选择性运算符 :消耗固定数量的入站元组并生成固定数量的出站元组。例如,SPL 标准工具包中的
超级会员免费看
订阅专栏 解锁全文

376

被折叠的 条评论
为什么被折叠?



