public JoinOperator<I1, I2, OUT> withPartitioner(Partitioner<?> partitioner) {
		if (partitioner != null) {
			keys1.validateCustomPartitioner(partitioner, null);
			keys2.validateCustomPartitioner(partitioner, null);
		}
		this.customPartitioner = getInput1().clean(partitioner);
		return this;
	}
public JoinOperator < I1 , I2 , OUT > withPartitioner ( Partitioner < ? > partitioner ) { if ( partitioner != null ) { keys1 . validateCustomPartitioner ( partitioner , null ) ; keys2 . validateCustomPartitioner ( partitioner , null ) ; } this . customPartitioner = getInput1 ( ) . clean ( partitioner ) ; return this ; }
Sets a custom partitioner for this join. The partitioner will be called on the join keys to determine
the partition a key should be assigned to. The partitioner is evaluated on both join inputs in the
same way.

<p>NOTE: A custom partitioner can only be used with single-field join keys, not with composite join keys.

@param partitioner The custom partitioner to be used.
@return This join operator, to allow for function chaining.