LocalAccumulateBy
对记录进行分组,并在每个分片上本地将每个组缩减为单个记录。
public <I extends java.io.Serializable> GearsBuilder<I> localAccumulateBy(
gears.operations.ExtractorOperation<T> extractor,
gears.operations.AccumulateByOperation<T,I> accumulator)
localAccumulateBy
函数类似于 accumulateBy
,不同之处在于它在每个分片上本地执行操作,而无需在分片之间移动数据。
在每个分片上,它会迭代管道中的记录,基于提供的提取器对它们进行分组,然后使用累加器函数将每个组缩减为每个组的单个记录。
累加器的初始值为 null。
参数
类型参数
名称 | 描述 |
---|---|
I | 返回构建器的模板类型 |
函数参数
名称 | 类型 | 描述 |
---|---|---|
accumulator | 一个函数,其中包含使用每个记录更新累加器值的逻辑 | |
extractor | ExtractorOperation |
从每个记录中提取特定值 |
返回
返回具有新模板类型的 GearsBuilder 对象。
示例
GearsBuilder.CreateGearsBuilder(reader).
localAccumulateBy(r->{
return r.getStringVal();
},(k, a, r)->{
Integer ret = null;
if(a == null) {
ret = 0;
}else {
ret = (Integer)a;
}
return ret + 1;
});