1、keyby、partitionCustom 区别
(1)KeyBy
DataStream → KeyedStream: 通过制定字段,将流转化成带key的流,之后相同key的数据,分发到相同的算子上。属于逻辑上的分区。
dataStream.keyBy("someKey") // 通过 "someKey"进行分组
dataStream.keyBy(0) // 通过Tuple的第一个元素进行分组
(2)物理分区
(1)Custom partitioning
DataStream → DataStream
描述: 使用用户自定义的分区来为每一个元素选择具体的task.
dataStream.partitionCustom(partitioner, "someKey")
dataStream.partitionCustom(partitioner, 0)
(2)Rebalancing (Round-robin partitioning)
DataStream → DataStream
描述: 循环的为元素分区,为每一个分区创建相等的负载,这在数据倾斜的优化上是非常有用的:
dataStream.rebalance()
(3)Rescaling
DataStream → DataStream