Search in sources :

Example 1 with WindowGroupTransform

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);
}
Also used : WindowGroupTransform(com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform) DistributedBiFunction(com.hazelcast.jet.function.DistributedBiFunction) ArrayList(java.util.ArrayList) BatchStage(com.hazelcast.jet.pipeline.BatchStage) Tag.tag(com.hazelcast.jet.datamodel.Tag.tag) KeyedWindowResultFunction(com.hazelcast.jet.function.KeyedWindowResultFunction) AggregateOperation(com.hazelcast.jet.aggregate.AggregateOperation) WindowGroupAggregateBuilder(com.hazelcast.jet.pipeline.WindowGroupAggregateBuilder) StageWithGroupingAndWindow(com.hazelcast.jet.pipeline.StageWithGroupingAndWindow) DistributedFunction(com.hazelcast.jet.function.DistributedFunction) GroupTransform(com.hazelcast.jet.impl.pipeline.transform.GroupTransform) Nonnull(javax.annotation.Nonnull) StreamStage(com.hazelcast.jet.pipeline.StreamStage) WindowDefinition(com.hazelcast.jet.pipeline.WindowDefinition) StageWithGrouping(com.hazelcast.jet.pipeline.StageWithGrouping) JetEventFunctionAdapter.adaptAggregateOperation(com.hazelcast.jet.impl.pipeline.JetEventFunctionAdapter.adaptAggregateOperation) Tag(com.hazelcast.jet.datamodel.Tag) Transform(com.hazelcast.jet.impl.pipeline.transform.Transform) ADAPT_TO_JET_EVENT(com.hazelcast.jet.impl.pipeline.ComputeStageImplBase.ADAPT_TO_JET_EVENT) List(java.util.List) ComputeStageImplBase.ensureJetEvents(com.hazelcast.jet.impl.pipeline.ComputeStageImplBase.ensureJetEvents) Collectors.toList(java.util.stream.Collectors.toList) JetEventFunctionAdapter.adaptKeyFn(com.hazelcast.jet.impl.pipeline.JetEventFunctionAdapter.adaptKeyFn) StreamStageWithGrouping(com.hazelcast.jet.pipeline.StreamStageWithGrouping) GroupAggregateBuilder(com.hazelcast.jet.pipeline.GroupAggregateBuilder) ArrayList(java.util.ArrayList) WindowGroupTransform(com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform) GroupTransform(com.hazelcast.jet.impl.pipeline.transform.GroupTransform) Transform(com.hazelcast.jet.impl.pipeline.transform.Transform) WindowGroupTransform(com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform) DistributedFunction(com.hazelcast.jet.function.DistributedFunction)

Example 2 with WindowGroupTransform

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);
}
Also used : AbstractTransform(com.hazelcast.jet.impl.pipeline.transform.AbstractTransform) BiFunctionEx(com.hazelcast.function.BiFunctionEx) FunctionEx(com.hazelcast.function.FunctionEx) WindowGroupTransform(com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform) GroupTransform(com.hazelcast.jet.impl.pipeline.transform.GroupTransform) AbstractTransform(com.hazelcast.jet.impl.pipeline.transform.AbstractTransform) Transform(com.hazelcast.jet.impl.pipeline.transform.Transform) WindowGroupTransform(com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform)

Example 3 with WindowGroupTransform

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);
}
Also used : GeneralStage(com.hazelcast.jet.pipeline.GeneralStage) WindowGroupTransform(com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform) Transform(com.hazelcast.jet.impl.pipeline.transform.Transform) Nonnull(javax.annotation.Nonnull)

Example 4 with WindowGroupTransform

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);
}
Also used : GeneralStage(com.hazelcast.jet.pipeline.GeneralStage) WindowGroupTransform(com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform) Transform(com.hazelcast.jet.impl.pipeline.transform.Transform) Nonnull(javax.annotation.Nonnull)

Aggregations

Transform (com.hazelcast.jet.impl.pipeline.transform.Transform)4 WindowGroupTransform (com.hazelcast.jet.impl.pipeline.transform.WindowGroupTransform)4 Nonnull (javax.annotation.Nonnull)3 GroupTransform (com.hazelcast.jet.impl.pipeline.transform.GroupTransform)2 GeneralStage (com.hazelcast.jet.pipeline.GeneralStage)2 BiFunctionEx (com.hazelcast.function.BiFunctionEx)1 FunctionEx (com.hazelcast.function.FunctionEx)1 AggregateOperation (com.hazelcast.jet.aggregate.AggregateOperation)1 Tag (com.hazelcast.jet.datamodel.Tag)1 Tag.tag (com.hazelcast.jet.datamodel.Tag.tag)1 DistributedBiFunction (com.hazelcast.jet.function.DistributedBiFunction)1 DistributedFunction (com.hazelcast.jet.function.DistributedFunction)1 KeyedWindowResultFunction (com.hazelcast.jet.function.KeyedWindowResultFunction)1 ADAPT_TO_JET_EVENT (com.hazelcast.jet.impl.pipeline.ComputeStageImplBase.ADAPT_TO_JET_EVENT)1 ComputeStageImplBase.ensureJetEvents (com.hazelcast.jet.impl.pipeline.ComputeStageImplBase.ensureJetEvents)1 JetEventFunctionAdapter.adaptAggregateOperation (com.hazelcast.jet.impl.pipeline.JetEventFunctionAdapter.adaptAggregateOperation)1 JetEventFunctionAdapter.adaptKeyFn (com.hazelcast.jet.impl.pipeline.JetEventFunctionAdapter.adaptKeyFn)1 AbstractTransform (com.hazelcast.jet.impl.pipeline.transform.AbstractTransform)1 BatchStage (com.hazelcast.jet.pipeline.BatchStage)1 GroupAggregateBuilder (com.hazelcast.jet.pipeline.GroupAggregateBuilder)1