然后需要对图进行处理/搜索,并可能向下游发出事件。我希望图运算符能够水平伸缩,即每个并行运算符处理图的一个子集(但这将要求每个运算符能够访问整个图)。我感兴趣的是如何将负载分散到所有并行运算符上。
// key input events for processing by key
KeyedStream<MyEvent> keyedStream = myInputStream.keyBy(...);
// process each keyed input stream and produce output events that need to be combined into a graph
SingleOutputStreamOperator<MyGraphEvent> graphStream = keyedStream.process(...));
// recombine into a single graph operator via broadcast(), then process
DataStream<MyOutputEvent> output = graphStream.broadcast().flatMap(new MyGraphFlatmapFunction());
我想我可以使用broadcast()
来确保每个键控操作符的所有输出都发送给每个下游操作符。
MyGraphFlatMapFunction
获取一个MyGraphEvent
对象流,在内部状态中创建一个图,并可选地生成一个MyOutputEvent
对象流。我希望每个并行运算符处理图的一个子集。不管存在的运算符的并行实例的数量如何,我都希望处理所有的图(这意味着我不希望每个运算符只处理图的某个随机子集),也不希望并行运算符处理图的相同部分(没有重复处理)。
我希望能够在MyGraphFlatMapFunction
中执行以下操作:
int index;
// I want to get the operator instance number & the number of parallel operators in the stream topology
int operatorIndex = getOperatorIndex();
int operatorCount = getTotalNumberOfParallelOperators();
// process every nth object
for (index = 0; index < someCollection.size(); index++) {
if (index % operatorCount == operatorIndex) {
// do some processing
} else {
continue;
}
}
有没有办法知道并行运算符存在多少个实例,这是哪个运算符?有没有别的方法可以达到我所追求的目标?
如果使用RichFlatMapFunction
,则可以通过GetRuntimeContext()
访问RuntimeContext
。runtimeContext
具有您需要的两种方法:
希望这有帮助。
问题内容: 如何理解java三元运算符 : ? ? 问题答案: 是的,它是的简写形式 它称为条件运算符。许多人(错误地)将其称为三元运算符,因为它是Java,C,C ++以及可能还有许多其他语言中唯一的三元运算符。但是理论上可以有另一个三元运算符,而只能有一个条件运算符。 官方名称在Java语言规范中给出: 条件运算符 使用一个表达式的布尔值来确定应评估另外两个表达式中的哪一个。 请注意,两个分支
我读到了四个Kinesis流的数据。每个流中的数据都是不同的数据类型。读取所有四个流后,我分配时间戳和水印,并聚合来自每个流的数据。四个聚合的结果都是使用相同的泛型对象输出的。我想合并四个流的结果,这样我就可以将合并后的流发送到一个ProcessFunction。这基本上允许我像使用CoProcessFunction一样使用ProcessFunction,但我可以处理来自两个以上流的数据(在本例中
有2个指定了时间戳的数据流和定义如下的水印生成器。 当这两个流在一个操作符中连接时,来自streamA或streamB的最小水印作为连接操作符的水印。 组合B运算符的水印是A或B中的最小值。基于C类元素是否标记为延迟。 但是,由于我们没有附加任何分配给的时间戳,这是否意味着运算符中的任何元素都没有被标记为延迟?因此在C上窗口不会有任何延迟记录被删除? 假设我们将分配的时间戳和水印生成器附加到C,如
本文向大家介绍如何在Windows中运行多个MySQL实例详解,包括了如何在Windows中运行多个MySQL实例详解的使用技巧和注意事项,需要的朋友参考一下 前言 在Windows中可以从命令行为每个实例使用合适的操作参数来手动启动多个MySQL实例或者通过以Windows服务方式来安装多个服务器来运行。 1.在windows中MySQL的base目录中创建两个新实例的数据目录data3307,
主要内容:实例位运算符 Erlang提供四个位运算符。以下是在 Erlang 可用的位运算符。 S.No. 操作符 & 描述 1 band 位 “and”运算符 2 bor 位 “or” 运算符 3 bxor 位 “xor”或异运算符 4 bnot 按位反运算符 以下是这些运算符真值表显示 - p q p & q p | q p ^ q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1
我有以下情况 有2个虚拟机正在向Kafka发送流,CEP引擎正在接收这些流,当单个流满足特定条件时,会生成警告。 目前,CEP正在检查两条流上的相同情况(当心率 但我想对这两个流使用不同的条件。例如,如果 如何实现这一点?我需要在同一环境中创建多个流环境或多个模式吗?