## cascading.pipe
Class CoGroup

    java.lang.Object
      cascading.pipe.Pipe
          cascading.pipe.Splice
              cascading.pipe.CoGroup

All Implemented Interfaces:
  FlowElement, Group, Traceable, Serializable

    public class CoGroup

extends Splice
implements Group

The CoGroup pipe allows for two or more tuple streams to join into a single stream via an optional `Joiner`.

If followed by an assembly of `Every`s to execute one or more `Aggregator`s, they will be guaranteed to receive all values associated with a unique grouping key. In the case of a MapReduce platform, this invokes a `Reduce` task to guarantee all values are associated with a given unique grouping key.

If no aggregations are to be performed, and one or more streams of data are small (may fit in reasonable memory), see the `HashJoin` Pipe for partially non-blocking joins.

For every incoming `Pipe` instance, a `Fields` instance must be specified that denotes the field names or positions that should be co-grouped with the other given Pipe instances. If the incoming Pipe instances declare one or more field with the same name, the declaredFields must be given to name all the outgoing Tuple stream fields to overcome field name collisions. That is, if the first pipe has 4 fields, and the second pipe has 3 fields, 7 fields total must be declared having unique field names, if any.

`resultGroupFields` value is a convenience allowing the override of the resulting grouping field names. The size of resultGroupFields must be equal to the total number of grouping keys fields. That is, if joining on two pipes which are grouping on two keys, the resultGroupFields must be 4 fields, each field field name being unique, if any. By default, the resultGroupKeys are retrieved from the declaredFields.

By default CoGroup performs an inner join via the `InnerJoin` `Joiner` class.

To implement a custom join, implement the `Joiner` interface. Or, as of Cascading 2.5, use a `BufferJoin` and implement the join in a `Buffer`.

Self joins can be achieved by using a constructor that takes a single Pipe and a numSelfJoins value. A value of 1 for numSelfJoins will join the Pipe with itself once.

The outgoing grouping Tuple stream is sorted by the natural order of the grouping fields. To control this order, at least the first groupingFields value given should be an instance of `Fields` containing `Comparator` instances for the appropriate fields. This allows fine grained control of the sort grouping order.

CoGrouping does not scale well when implemented over MapReduce. In Cascading there are two ways to optimize CoGrouping.

The first is to consider the order of the pipes handed to the CoGroup constructor.

During co-grouping, for any given unique grouping key, all of the rightmost pipes will accumulate the current grouping values into memory so they may be iterated across for every value in the left hand side pipe. During the accumulation step, if the number of values exceeds the `SpillableTupleList` threshold value, those values will be spilled to disk so the accumulation may continue.

See the `TupleCollectionFactory` and `TupleMapFactory` for a means to use alternative spillable types.

There is no accumulation for the left hand side pipe, only for those to the "right".

Thus, for the pipe that has the largest number of values per unique key grouping, on average, it should be made the "left hand side" pipe (`lhs`). And all remaining pipes should be the on the "right hand side" (`rhs`) to prevent the likelihood of a spill and to reduce the blocking associated with accumulating the values. If using the `Pipe[]` constructor, `Pipe[0]` is the left hand sided pipe.

If spills are happening, consider increasing the spill threshold, see `SpillableTupleList`, if more RAM is available. See the logs for hints on how much more these values can be increased, if any.

Spills are intended to prevent `OutOfMemoryError`'s, so reducing the number of spills is important by increasing the threshold, but memory errors aren't recoverable, so the correct balance will need to be found.

To customize the spill values for a given CoGroup only, see `Pipe.getStepConfigDef()`.

See the `Hasher` interface when a custom `Comparator` on the grouping keys is being provided that makes two values with differing hashCode values equal. For example, `new BigDecimal( 100.0D )` and `new Double 100.0D )` are equal using a custom Comparator, but `Object.hashCode()` will be different, thus forcing each value into differing partitions.

Currently "non-equi-joins" are not supported via the Hasher and Comparator interfaces. That is, joining one String key with a lowercase value with another String key with an uppercase value using a "case insensitive" Comparator will not have consistent results. The join will execute and be correct, but the actual values in the key columns may be replaced with "equivalent" values from other streams.

If the original key values must be retained, consider normalizing the keys with a Function and then joining on the resulting field.

See Also:
  `InnerJoin`, `OuterJoin`, `LeftJoin`, `RightJoin`, `MixedJoin`, `BufferJoin`, `Fields`, `SpillableTupleList`, Serialized Form

Field Summary

Fields inherited from class cascading.pipe.Splice
`declaredFields, keyFieldsMap, resultGroupFields, sortFieldsMap`

Fields inherited from class cascading.pipe.Pipe
`configDef, name, parent, previous, stepConfigDef`

Constructor Summary
`CoGroup(Pipe... pipes)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe[] pipes, Fields[] groupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe[] pipes, Fields[] groupFields, Fields declaredFields, Fields resultGroupFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe[] pipes, Fields[] groupFields, Fields declaredFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe pipe, Fields groupFields, int numSelfJoins)` Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.
`CoGroup(Pipe pipe, Fields groupFields, int numSelfJoins, Fields declaredFields)` Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.
`CoGroup(Pipe pipe, Fields groupFields, int numSelfJoins, Fields declaredFields, Fields resultGroupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe pipe, Fields groupFields, int numSelfJoins, Fields declaredFields, Fields resultGroupFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe pipe, Fields groupFields, int numSelfJoins, Fields declaredFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.
`CoGroup(Pipe pipe, Fields groupFields, int numSelfJoins, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.
`CoGroup(Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Fields declaredFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Fields declaredFields, Fields resultGroupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Fields declaredFields, Fields resultGroupFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Fields declaredFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe... pipes)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe[] pipes, Fields[] groupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe[] pipes, Fields[] groupFields, Fields declaredFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe[] pipes, Fields[] groupFields, Fields declaredFields, Fields resultGroupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe[] pipes, Fields[] groupFields, Fields declaredFields, Fields resultGroupFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe[] pipes, Fields[] groupFields, Fields declaredFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe pipe, Fields groupFields, int numSelfJoins)` Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.
`CoGroup(String groupName, Pipe pipe, Fields groupFields, int numSelfJoins, Fields declaredFields)` Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.
`CoGroup(String groupName, Pipe pipe, Fields groupFields, int numSelfJoins, Fields declaredFields, Fields resultGroupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe pipe, Fields groupFields, int numSelfJoins, Fields declaredFields, Fields resultGroupFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe pipe, Fields groupFields, int numSelfJoins, Fields declaredFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.
`CoGroup(String groupName, Pipe pipe, Fields groupFields, int numSelfJoins, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.
`CoGroup(String groupName, Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Fields declaredFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Fields declaredFields, Fields resultGroupFields)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Fields declaredFields, Fields resultGroupFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Fields declaredFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.
`CoGroup(String groupName, Pipe lhs, Fields lhsGroupFields, Pipe rhs, Fields rhsGroupFields, Joiner joiner)` Constructor CoGroup creates a new CoGroup instance.

Method Summary

Methods inherited from class cascading.pipe.Splice
`equals, getDeclaredFields, getJoinDeclaredFields, getJoiner, getKeySelectors, getName, getNumSelfJoins, getPipePos, getPrevious, getSortingSelectors, hashCode, isCoGroup, isEquivalentTo, isGroupBy, isJoin, isMerge, isSorted, isSortReversed, outgoingScopeFor, printInternal, resolveIncomingOperationPassThroughFields, toString`

Methods inherited from class cascading.pipe.Pipe
`getConfigDef, getHeads, getParent, getStepConfigDef, getTrace, hasConfigDef, hasStepConfigDef, id, named, names, pipes, print, resolveIncomingOperationArgumentFields, setParent`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface cascading.pipe.Group
`getKeySelectors, getName, getSortingSelectors, isCoGroup, isGroupBy, isSorted, isSortReversed`

Methods inherited from interface cascading.flow.FlowElement
`getConfigDef, getStepConfigDef, hasConfigDef, hasStepConfigDef, isEquivalentTo, outgoingScopeFor, resolveIncomingOperationArgumentFields, resolveIncomingOperationPassThroughFields`

Constructor Detail

### CoGroup

    @ConstructorProperties(value={"lhs","lhsGroupFields","rhs","rhsGroupFields","declaredFields"})
    public CoGroup(Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Fields declaredFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `declaredFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"lhs","lhsGroupFields","rhs","rhsGroupFields","declaredFields","resultGroupFields"})
    public CoGroup(Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Fields declaredFields,
                                              Fields resultGroupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"lhs","lhsGroupFields","rhs","rhsGroupFields","declaredFields","joiner"})
    public CoGroup(Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Fields declaredFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `declaredFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"lhs","lhsGroupFields","rhs","rhsGroupFields","declaredFields","resultGroupFields","joiner"})
    public CoGroup(Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Fields declaredFields,
                                              Fields resultGroupFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields
    `joiner` - of type Joiner

### CoGroup

    @ConstructorProperties(value={"lhs","lhsGroupFields","rhs","rhsGroupFields","joiner"})
    public CoGroup(Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"lhs","lhsGroupFields","rhs","rhsGroupFields"})
    public CoGroup(Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields

### CoGroup

    @ConstructorProperties(value="pipes")
    public CoGroup(Pipe... pipes)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `pipes` - of type Pipe...

### CoGroup

    @ConstructorProperties(value={"pipes","groupFields"})
    public CoGroup(Pipe[] pipes,
                                              Fields[] groupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `pipes` - of type Pipe[]
    `groupFields` - of type Fields[]

### CoGroup

    @ConstructorProperties(value={"pipes","groupFields","declaredFields","joiner"})
    public CoGroup(Pipe[] pipes,
                                              Fields[] groupFields,
                                              Fields declaredFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `pipes` - of type Pipe[]
    `groupFields` - of type Fields[]
    `declaredFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"pipes","groupFields","declaredFields","resultGroupFields","joiner"})
    public CoGroup(Pipe[] pipes,
                                              Fields[] groupFields,
                                              Fields declaredFields,
                                              Fields resultGroupFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `pipes` - of type Pipe[]
    `groupFields` - of type Fields[]
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields
    `joiner` - of type Joiner

### CoGroup

    @ConstructorProperties(value={"groupName","pipes","groupFields"})
    public CoGroup(String groupName,
                                              Pipe[] pipes,
                                              Fields[] groupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `pipes` - of type Pipe[]
    `groupFields` - of type Fields[]

### CoGroup

    @ConstructorProperties(value={"groupName","pipes","groupFields","declaredFields"})
    public CoGroup(String groupName,
                                              Pipe[] pipes,
                                              Fields[] groupFields,
                                              Fields declaredFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `pipes` - of type Pipe[]
    `groupFields` - of type Fields[]
    `declaredFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"groupName","pipes","groupFields","declaredFields","resultGroupFields"})
    public CoGroup(String groupName,
                                              Pipe[] pipes,
                                              Fields[] groupFields,
                                              Fields declaredFields,
                                              Fields resultGroupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `pipes` - of type Pipe[]
    `groupFields` - of type Fields[]
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"groupName","pipes","groupFields","declaredFields","joiner"})
    public CoGroup(String groupName,
                                              Pipe[] pipes,
                                              Fields[] groupFields,
                                              Fields declaredFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `pipes` - of type Pipe[]
    `groupFields` - of type Fields[]
    `declaredFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"groupName","pipes","groupFields","declaredFields","resultGroupFields","joiner"})
    public CoGroup(String groupName,
                                              Pipe[] pipes,
                                              Fields[] groupFields,
                                              Fields declaredFields,
                                              Fields resultGroupFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `pipes` - of type Pipe[]
    `groupFields` - of type Fields[]
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"groupName","lhs","lhsGroupFields","rhs","rhsGroupFields","declaredFields"})
    public CoGroup(String groupName,
                                              Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Fields declaredFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `declaredFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"groupName","lhs","lhsGroupFields","rhs","rhsGroupFields","declaredFields","resultGroupFields"})
    public CoGroup(String groupName,
                                              Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Fields declaredFields,
                                              Fields resultGroupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"groupName","lhs","lhsGroupFields","rhs","rhsGroupFields","declaredFields","joiner"})
    public CoGroup(String groupName,
                                              Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Fields declaredFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `declaredFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"groupName","lhs","lhsGroupFields","rhs","rhsGroupFields","declaredFields","resultGroupFields","joiner"})
    public CoGroup(String groupName,
                                              Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Fields declaredFields,
                                              Fields resultGroupFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields
    `joiner` - of type Joiner

### CoGroup

    @ConstructorProperties(value={"groupName","lhs","lhsGroupFields","rhs","rhsGroupFields","joiner"})
    public CoGroup(String groupName,
                                              Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"groupName","lhs","lhsGroupFields","rhs","rhsGroupFields"})
    public CoGroup(String groupName,
                                              Pipe lhs,
                                              Fields lhsGroupFields,
                                              Pipe rhs,
                                              Fields rhsGroupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `lhs` - of type Pipe
    `lhsGroupFields` - of type Fields
    `rhs` - of type Pipe
    `rhsGroupFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"groupName","pipes"})
    public CoGroup(String groupName,
                                              Pipe... pipes)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `pipes` - of type Pipe...

### CoGroup

    @ConstructorProperties(value={"pipe","groupFields","numSelfJoins","declaredFields"})
    public CoGroup(Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Fields declaredFields)

  Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.

  Parameters:
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `declaredFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"pipe","groupFields","numSelfJoins","declaredFields","resultGroupFields"})
    public CoGroup(Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Fields declaredFields,
                                              Fields resultGroupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"pipe","groupFields","numSelfJoins","declaredFields","joiner"})
    public CoGroup(Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Fields declaredFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.

  Parameters:
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `declaredFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"pipe","groupFields","numSelfJoins","declaredFields","resultGroupFields","joiner"})
    public CoGroup(Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Fields declaredFields,
                                              Fields resultGroupFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields
    `joiner` - of type Joiner

### CoGroup

    @ConstructorProperties(value={"pipe","groupFields","numSelfJoins","joiner"})
    public CoGroup(Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.

  Parameters:
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"pipe","groupFields","numSelfJoins"})
    public CoGroup(Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins)

  Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.

  Parameters:
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int

### CoGroup

    @ConstructorProperties(value={"groupName","pipe","groupFields","numSelfJoins","declaredFields"})
    public CoGroup(String groupName,
                                              Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Fields declaredFields)

  Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.

  Parameters:
    `groupName` - of type String
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `declaredFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"groupName","pipe","groupFields","numSelfJoins","declaredFields","resultGroupFields"})
    public CoGroup(String groupName,
                                              Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Fields declaredFields,
                                              Fields resultGroupFields)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields

### CoGroup

    @ConstructorProperties(value={"groupName","pipe","groupFields","numSelfJoins","declaredFields","joiner"})
    public CoGroup(String groupName,
                                              Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Fields declaredFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.

  Parameters:
    `groupName` - of type String
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `declaredFields` - of type Fields
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"groupName","pipe","groupFields","numSelfJoins","declaredFields","resultGroupFields","joiner"})
    public CoGroup(String groupName,
                                              Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Fields declaredFields,
                                              Fields resultGroupFields,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance.

  Parameters:
    `groupName` - of type String
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `declaredFields` - of type Fields
    `resultGroupFields` - of type Fields
    `joiner` - of type Joiner

### CoGroup

    @ConstructorProperties(value={"groupName","pipe","groupFields","numSelfJoins","joiner"})
    public CoGroup(String groupName,
                                              Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins,
                                              Joiner joiner)

  Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.

  Parameters:
    `groupName` - of type String
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int
    `joiner` - of type CoGrouper

### CoGroup

    @ConstructorProperties(value={"groupName","pipe","groupFields","numSelfJoins"})
    public CoGroup(String groupName,
                                              Pipe pipe,
                                              Fields groupFields,
                                              int numSelfJoins)

  Constructor CoGroup creates a new CoGroup instance that performs numSelfJoins number of self joins on the given `Pipe` instance.

  Parameters:
    `groupName` - of type String
    `pipe` - of type Pipe
    `groupFields` - of type Fields
    `numSelfJoins` - of type int

Copyright © 2007-2014 Concurrent, Inc. All Rights Reserved.