使用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程序的执行方式.
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |