use of com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform in project hazelcast-jet by hazelcast.
the class GrAggBuilder method buildStream.
@SuppressWarnings("unchecked")
public <A, R, OUT> StreamStage<OUT> buildStream(@Nonnull AggregateOperation<A, ? extends R> aggrOp, @Nonnull KeyedWindowResultFunction<? super K, ? super R, OUT> mapToOutputFn) {
List<Transform> upstreamTransforms = upstreamStages.stream().map(s -> s.transform).collect(toList());
JetEventFunctionAdapter fnAdapter = ADAPT_TO_JET_EVENT;
// Avoided Stream API here due to static typing issues
List<DistributedFunction<?, ? extends K>> adaptedKeyFns = new ArrayList<>();
for (DistributedFunction keyFn : keyFns) {
adaptedKeyFns.add(adaptKeyFn(keyFn));
}
Transform transform = new WindowGroupTransform<K, A, R, JetEvent<OUT>>(upstreamTransforms, wDef, adaptedKeyFns, adaptAggregateOperation(aggrOp), fnAdapter.adaptKeyedWindowResultFn(mapToOutputFn));
pipelineImpl.connect(upstreamTransforms, transform);
return new StreamStageImpl<>(transform, fnAdapter, pipelineImpl);
}
use of com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform in project hazelcast by hazelcast.
the class GrAggBuilder method buildStream.
public <A, R> StreamStage<KeyedWindowResult<K, R>> buildStream(@Nonnull AggregateOperation<A, ? extends R> aggrOp) {
List<Transform> upstreamTransforms = toList(upstreamStages, s -> s.transform);
FunctionAdapter fnAdapter = ADAPT_TO_JET_EVENT;
// Casts in this expression are a workaround for JDK 8 compiler bug:
@SuppressWarnings("unchecked") List<FunctionEx<?, ? extends K>> adaptedKeyFns = toList(keyFns, fn -> fnAdapter.adaptKeyFn((FunctionEx) fn));
AbstractTransform transform = new WindowGroupTransform<K, R>(upstreamTransforms, wDef, adaptedKeyFns, fnAdapter.adaptAggregateOperation(aggrOp));
pipelineImpl.connect(upstreamStages, transform);
return new StreamStageImpl<>(transform, fnAdapter, pipelineImpl);
}
use of com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform in project hazelcast by hazelcast.
the class StageWithKeyAndWindowImpl method aggregate2.
@Nonnull
@Override
@SuppressWarnings("rawtypes")
public <T1, R> StreamStage<KeyedWindowResult<K, R>> aggregate2(@Nonnull StreamStageWithKey<T1, ? extends K> stage1, @Nonnull AggregateOperation2<? super T, ? super T1, ?, ? extends R> aggrOp) {
ensureJetEvents(computeStage, "This pipeline stage");
ComputeStageImplBase computeStage1 = ((StageWithGroupingBase) stage1).computeStage;
ensureJetEvents(computeStage1, "stage1");
Transform upstream1 = computeStage1.transform;
FunctionAdapter fnAdapter = ADAPT_TO_JET_EVENT;
return this.computeStage.attach(new WindowGroupTransform<K, R>(asList(this.computeStage.transform, upstream1), wDef, asList(fnAdapter.adaptKeyFn(keyFn()), fnAdapter.adaptKeyFn(stage1.keyFn())), adaptAggregateOperation2(aggrOp)), singletonList((GeneralStage<?>) computeStage1), fnAdapter);
}
use of com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform in project hazelcast by hazelcast.
the class StageWithKeyAndWindowImpl method aggregate3.
@Nonnull
@Override
@SuppressWarnings("rawtypes")
public <T1, T2, R> StreamStage<KeyedWindowResult<K, R>> aggregate3(@Nonnull StreamStageWithKey<T1, ? extends K> stage1, @Nonnull StreamStageWithKey<T2, ? extends K> stage2, @Nonnull AggregateOperation3<? super T, ? super T1, ? super T2, ?, ? extends R> aggrOp) {
ComputeStageImplBase computeStage1 = ((StageWithGroupingBase) stage1).computeStage;
ComputeStageImplBase computeStage2 = ((StageWithGroupingBase) stage2).computeStage;
ensureJetEvents(computeStage, "This pipeline stage");
ensureJetEvents(computeStage1, "stage1");
ensureJetEvents(computeStage2, "stage2");
Transform transform1 = ((StageWithGroupingBase) stage1).computeStage.transform;
Transform transform2 = ((StageWithGroupingBase) stage2).computeStage.transform;
FunctionAdapter fnAdapter = ADAPT_TO_JET_EVENT;
return computeStage.attach(new WindowGroupTransform<K, R>(asList(computeStage.transform, transform1, transform2), wDef, asList(fnAdapter.adaptKeyFn(keyFn()), fnAdapter.adaptKeyFn(stage1.keyFn()), fnAdapter.adaptKeyFn(stage2.keyFn())), adaptAggregateOperation3(aggrOp)), asList((GeneralStage<?>) computeStage1, (GeneralStage<?>) computeStage2), fnAdapter);
}
Aggregations