You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Xingcan Cui (JIRA)" <ji...@apache.org> on 2017/06/16 10:41:00 UTC

[jira] [Created] (FLINK-6936) Add multiple targets support for custom partitioner

Xingcan Cui created FLINK-6936:
----------------------------------

             Summary: Add multiple targets support for custom partitioner
                 Key: FLINK-6936
                 URL: https://issues.apache.org/jira/browse/FLINK-6936
             Project: Flink
          Issue Type: Improvement
          Components: DataStream API
            Reporter: Xingcan Cui
            Assignee: Xingcan Cui
            Priority: Minor


The current user-facing Partitioner only allows returning one target.
{code:java}
@Public
public interface Partitioner<K> extends java.io.Serializable, Function {

	/**
	 * Computes the partition for the given key.
	 *
	 * @param key The key.
	 * @param numPartitions The number of partitions to partition into.
	 * @return The partition index.
	 */
	int partition(K key, int numPartitions);
}
{code}
Actually, this function should return multiple partitions and this may be a historical legacy.
There could be at least three approaches to solve this.
# Make the `protected DataStream<T> setConnectionType(StreamPartitioner<T> partitioner)` method in DataStream public and that allows users to directly define StreamPartitioner.
# Change the `partition` method in the Partitioner interface to return an int array instead of a single int value.
# Add a new `multicast` method to DataStream and provide a MultiPartitioner interface which returns an int array.

Considering the consistency of API, the 3rd approach seems to be an acceptable choice. [~aljoscha], what do you think?



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)