org.apache.storm.grouping

## Interface CustomStreamGrouping

- All Superinterfaces:
    Serializable
  All Known Subinterfaces:
    LoadAwareCustomStreamGrouping
  All Known Implementing Classes:
    GlobalGrouping, GrouperFactory.AllGrouper, GrouperFactory.BasicLoadAwareCustomStreamGrouping, GrouperFactory.FieldsGrouper, GrouperFactory.GlobalGrouper, GrouperFactory.NoneGrouper, IdentityGrouping, IndexHashGrouping, LoadAwareShuffleGrouping, Murmur3StreamGrouping, NGrouping, PartialKeyGrouping, ShuffleGrouping

      public interface CustomStreamGrouping
      extends Serializable

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `List<Integer>` | `chooseTasks(int taskId, List<Object> values)` This function implements a custom stream grouping.
    `void` | `prepare(WorkerTopologyContext context, GlobalStreamId stream, List<Integer> targetTasks)` Tells the stream grouping at runtime the tasks in the target bolt.

- - ### Method Detail

    - #### prepare

          void prepare(WorkerTopologyContext context,
                       GlobalStreamId stream,
                       List<Integer> targetTasks)

      Tells the stream grouping at runtime the tasks in the target bolt. This information should be used in chooseTasks to determine the target tasks.

      It also tells the grouping the metadata on the stream this grouping will be used on.

    - #### chooseTasks

          List<Integer> chooseTasks(int taskId,
                                    List<Object> values)

      This function implements a custom stream grouping. It takes in as input the number of tasks in the target bolt in prepare and returns the tasks to send the tuples to.

      Parameters:
        `values` - the values to group on

Copyright © 2021 The Apache Software Foundation. All rights reserved.