作者:梦三国 | 来源:互联网 | 2023-01-09 11:34
Flink的数据集API中有各种分区功能,例如partitionByHash
和partitionByRange
。
我想首先了解什么是分区,groupBy
以及分区之间的区别。
1> Fabian Huesk..:
分区是比groupBy
数据更底层的操作,并且不对数据应用任何功能。而是定义如何在并行任务实例之间分配数据。可以使用不同的方法对数据进行分区,例如哈希分区或范围分区。
groupBy
本身不是一项操作。它总是需要被所分组的应用的功能DataSet
,例如reduce
,groupReduce
,或groupCombine
。该groupBy
API定义了如何给他们到相应的函数之前的记录进行分组。记录分组分为两个步骤。
具有相同分组键的所有记录都必须移至相同的任务实例。这是通过对数据进行分区来完成的。由于通常有比任务实例更多的不同分组关键字,因此任务实例必须处理具有不同分组关键字的记录。
同一任务实例中的所有记录必须在键上分组。通常通过对数据进行排序来完成。
因此,第一步groupBy
是分区。