可以在创建topology的时候设置超时时间
setMessagetimeout默认时间是三十秒
链式调用 each 用于指定对stream中的每一个tuple进行指定的操作,需要指定tuple那些tuple操作;
对trident的操作要考虑是否跨网络传输,是否跨分区
filter过滤操作,只是判断某个tuple是否保留,无需夸网络和分区
each 指定传到操作中只是tuple的 子集(某一部分keyavlue),each操作没有改变tuple的结构,只是改变了tuple的数量;
Function()经过这个之后,tuple原来的key不会变,会增加一些新的key;
⚠️:tuple本身是不可变的,原来的tuple没有变,只是产生了一个新的tuple;
public void execute(TridentTuple tuple, TridentCollector collector) {
collector.emit(new Values(orderId, orderTime, orderAmtStr, memberId));
如果前面的被处理的字段已经解析了,后面的不需要使用,原来的不需要继续传递,可以修剪key - value
可以使用投影操作,project
经过这个操作以后,就会改变tuple结构
persistentAggregate全局聚合,部分删除,部分增加,删除的是除groupy 之外的字段,增加的是聚合之后的字段。
partitionAggregate局部分区,加上过滤器链,就可以重新转换为流
如果对于同一个流有不同的操作,可以创建一个局部流,然后分别对局部流操作即可。
在分布式环境下,先进行局部的聚合在全局聚合,可以降低网络的传输。