Class StatefulTeamScore.UpdateTeamScoreFn

  • All Implemented Interfaces:
    java.io.Serializable, org.apache.beam.sdk.transforms.display.HasDisplayData
    Enclosing class:
    StatefulTeamScore

    public static class StatefulTeamScore.UpdateTeamScoreFn
    extends org.apache.beam.sdk.transforms.DoFn<org.apache.beam.sdk.values.KV<java.lang.String,​org.apache.beam.examples.complete.game.UserScore.GameActionInfo>,​org.apache.beam.sdk.values.KV<java.lang.String,​java.lang.Integer>>
    Tracks each team's score separately in a single state cell and outputs the score every time it passes a new multiple of a threshold.

    We use stateful DoFn because:

    • State is key-partitioned. Therefore, the score is calculated per team.
    • Stateful DoFn can determine when to output based on the state. This only allows outputting when a team's score passes a given threshold.
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.apache.beam.sdk.transforms.DoFn

        org.apache.beam.sdk.transforms.DoFn.AlwaysFetched, org.apache.beam.sdk.transforms.DoFn.BoundedPerElement, org.apache.beam.sdk.transforms.DoFn.BundleFinalizer, org.apache.beam.sdk.transforms.DoFn.Element, org.apache.beam.sdk.transforms.DoFn.FieldAccess, org.apache.beam.sdk.transforms.DoFn.FinishBundle, org.apache.beam.sdk.transforms.DoFn.FinishBundleContext, org.apache.beam.sdk.transforms.DoFn.GetInitialRestriction, org.apache.beam.sdk.transforms.DoFn.GetInitialWatermarkEstimatorState, org.apache.beam.sdk.transforms.DoFn.GetRestrictionCoder, org.apache.beam.sdk.transforms.DoFn.GetSize, org.apache.beam.sdk.transforms.DoFn.GetWatermarkEstimatorStateCoder, org.apache.beam.sdk.transforms.DoFn.Key, org.apache.beam.sdk.transforms.DoFn.MultiOutputReceiver, org.apache.beam.sdk.transforms.DoFn.NewTracker, org.apache.beam.sdk.transforms.DoFn.NewWatermarkEstimator, org.apache.beam.sdk.transforms.DoFn.OnTimer, org.apache.beam.sdk.transforms.DoFn.OnTimerContext, org.apache.beam.sdk.transforms.DoFn.OnTimerFamily, org.apache.beam.sdk.transforms.DoFn.OnWindowExpiration, org.apache.beam.sdk.transforms.DoFn.OnWindowExpirationContext, org.apache.beam.sdk.transforms.DoFn.OutputReceiver<T extends java.lang.Object>, org.apache.beam.sdk.transforms.DoFn.ProcessContext, org.apache.beam.sdk.transforms.DoFn.ProcessContinuation, org.apache.beam.sdk.transforms.DoFn.ProcessElement, org.apache.beam.sdk.transforms.DoFn.RequiresStableInput, org.apache.beam.sdk.transforms.DoFn.RequiresTimeSortedInput, org.apache.beam.sdk.transforms.DoFn.Restriction, org.apache.beam.sdk.transforms.DoFn.Setup, org.apache.beam.sdk.transforms.DoFn.SideInput, org.apache.beam.sdk.transforms.DoFn.SplitRestriction, org.apache.beam.sdk.transforms.DoFn.StartBundle, org.apache.beam.sdk.transforms.DoFn.StartBundleContext, org.apache.beam.sdk.transforms.DoFn.StateId, org.apache.beam.sdk.transforms.DoFn.Teardown, org.apache.beam.sdk.transforms.DoFn.TimerFamily, org.apache.beam.sdk.transforms.DoFn.TimerId, org.apache.beam.sdk.transforms.DoFn.Timestamp, org.apache.beam.sdk.transforms.DoFn.TruncateRestriction, org.apache.beam.sdk.transforms.DoFn.UnboundedPerElement, org.apache.beam.sdk.transforms.DoFn.WatermarkEstimatorState, org.apache.beam.sdk.transforms.DoFn.WindowedContext
    • Constructor Summary

      Constructors 
      Constructor Description
      UpdateTeamScoreFn​(int thresholdScore)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void processElement​(org.apache.beam.sdk.transforms.DoFn.ProcessContext c, org.apache.beam.sdk.state.ValueState<java.lang.Integer> totalScore)
      To use a state cell, annotate a parameter with DoFn.StateId that matches the state declaration.
      • Methods inherited from class org.apache.beam.sdk.transforms.DoFn

        getAllowedTimestampSkew, getInputTypeDescriptor, getOutputTypeDescriptor, populateDisplayData, prepareForProcessing
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • UpdateTeamScoreFn

        public UpdateTeamScoreFn​(int thresholdScore)
    • Method Detail

      • processElement

        @ProcessElement
        public void processElement​(org.apache.beam.sdk.transforms.DoFn.ProcessContext c,
                                   @StateId("totalScore")
                                   org.apache.beam.sdk.state.ValueState<java.lang.Integer> totalScore)
        To use a state cell, annotate a parameter with DoFn.StateId that matches the state declaration. The type of the parameter should match the StateSpec type.