资源
【1】flink官方下载:http://flink.apache.org/downloads.html#apache-flink-1140
【2】Flink从入门到真香(16、Flink内置的一些Process Function):https://blog.51cto.com/mapengfei/2554673
自定义分区
import org.apache.flink.api.common.functions.Partitioner;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import java.util.Arrays;
public class PartitionerTest {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream dataStream = env.fromCollection(Arrays.asList(
new Tuple2<String, Long>("1", 1L),
new Tuple2<String, Long>("2", 2L),
new Tuple2<String, Long>("3", 3L),
new Tuple2<String, Long>("4", 4L)
));
DataStream partitionData = dataStream.partitionCustom(new MyPartitioner(), 1);
// 分区数和并行度有关,并行度要大于等于当前数据可以分区的个数
partitionData.print().setParallelism(2);
env.execute("PartitionerTest");
}
}
class MyPartitioner implements Partitioner<Long> {
@Override
public int partition(Long s, int i) {
System.out.println("s = " + s + "i = " + i);
if(s % 2 == 0) {
return 0;
} else {
return 1;
}
}
}
====> 输出
s = 1i = 2
s = 2i = 2
s = 3i = 2
s = 4i = 2
1> (2,2)
2> (1,1)
1> (4,4)
2> (3,3)