apache-flink - 弗林克 : Default Partitioning/Shuffling Strategy/Functions

标签 apache-flink

Flink 默认使用哪些策略(散列、排序)对 DataSet 进行归约/分组(例如 groupBy 或归约函数)? Flink 使用了哪些 API 函数

  1. 在洗牌阶段进行分区
  2. 对分区内的元素进行排序

默认?

最佳答案

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

您可以像这样以不同的方式对数据集进行分区:

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

关于apache-flink - 弗林克 : Default Partitioning/Shuffling Strategy/Functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35754568/

相关文章:

java - Apache Flink 测试中是否有像 Reactor 和 RxJava 中那样的虚拟时间概念

apache-flink - 找不到 org.apache.flink.streaming.api.scala.DataStream 的 Apache Flink 类文件

java - Apache Flink 错误java.lang.ClassNotFoundException : org. apache.flink.table.sources.TableSource?

java - 使用基于计数的窗口连接两个流

apache-flink - 对于 Apache Flink 中的特定异常,停止作业而不是重试

apache-flink - 选择所有字段为json字符串作为Flink SQL中的新字段

apache-flink - Flink 1.6.0作业jar上传大小限制

java - 与 Beam 中的运行程序依赖项冲突

apache-flink - 弗林克 : how to store state and use in another stream?

apache-flink - Flink 任务管理器中的槽是什么?