apache-flink - JoinWithTiny、JoinWithHuge 和 joinHint 的区别和好处

标签 apache-flink

使用 joinHint 和 joinWithTiny、joinWithHuge 有什么区别?

关于joinHint,我们可以使用
BROADCAST_HASH_FIRST:提示第一个连接输入比第二个小得多。
REPARTITION_HASH_FIRST:提示第一个连接输入比第二个小一点。

同时,我们也可以使用 joinWithHuge 和 joinWithTiny

他们是一样的吗?所以joinWithTiny 使用的是BROADCAST_HASH_FIRST?

利用这些的好处是 Flink 作业节省了检查加入数据大小的时间?

最佳答案

是的,DataSet.joinWithTiny(DataSet other)DataSet.join(DataSet other, JoinHint.BROADCAST_HASH_SECOND) 的快捷方式和 DataSet.joinWithHuge(DataSet other)DataSet.join(DataSet other, JoinHint.BROADCAST_HASH_FIRST) 的快捷方式.

Apache Flink 具有基于成本的优化器。基于成本的优化需要估计算子的输入规模。这在 Flink 程序中常见的用户定义函数的设置中可能非常困难(甚至不可能)。如果 Flink 的优化器无法获得有意义的大小估计,它会回退到健壮且可扩展的执行策略,例如重新分区而不是广播。优化器提示允许用户准确指定要使用的连接策略。如果用户知道有关已处理数据的某些属性,这将有助于提高程序的性能。

所以优化器提示不是减少获取估计的时间,而是让用户完全控制 Flink 程序的执行方式。

关于apache-flink - JoinWithTiny、JoinWithHuge 和 joinHint 的区别和好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31484856/

相关文章:

apache-flink - Flink 是否能保证所有情况下任务的容错性?

java - 弗林克 : How to read from multiple kafka cluster using same StreamExecutionEnvironment

kubernetes - 如何在 Kubernetes Flink 集群中实现 JobManager 高可用?

excel - flink InputStream 类 org.apache.commons.compress.archivers.zip.ZipFile$1 没有实现 InputStreamStatistics

hadoop - 远程滚动窗口聚合——时间序列 kudu vs influxdb vs opentsdb

apache-flink - 需要有关从 Flink DataStream Job 迁移到 Flink Stateful Functions 3.1 的建议

java - Flink 在 timeWindow 上应用函数

hadoop - 有没有办法在 Flink 中以编程方式定义 S3 连接详细信息?

java - 卡夫卡-> Storm ->flink : unexpected block data

apache-flink - Flink如何与RocksDB后端异步做checkpoint