Flink:默认分区/随机策略/功能

时间:2016-03-02 17:50:18

标签: apache-flink

默认情况下,Flink使用哪种策略(散列,排序)来减少/分组DataSet(例如groupBy或reduce函数)?以及Flink用于

的API函数
  1. 在随机播放步骤中进行分区和
  2. 对分区内的元素进行排序
  3. 默认情况下?

1 个答案:

答案 0 :(得分:5)

默认情况下,Flink使用散列分区和排序来执行reduce和groupReduce函数。在reduce或可组合的groupReduce的情况下,组合器也使用基于排序的策略来执行。基于哈希的组合策略目前正在进行代码审查,很快就会推出。 请注意,Flink默认使用流水线shuffle。这意味着生成发送方任务和接收方侧分拣机同时执行。

您可以使用以下不同方式对数据集进行分区:

val data: DataSet[(String, Int)] = ...
data.partitionByHash(0) // hash-partitions on String field
data.partitionByRange(1) // range-partitions on Int field (w/ online sampling overhead)
data.partitionCustom(new MyPartitioner(), 0) // use a custom function to partition on String field

您可以在本地对分区进行排序,如下所示:

val data: DataSet[(String, Int)] = ...
data.sortPartition(0, Order.ASCENDING) // sorts partitions on String field in ascending order