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;
});