Flink Table和SQL中BatchMode的特点、RuntimeMode转换注意点、触发计算API、查询优化

1. BatchMode的特点

  1. 数据是有界的insert-only流
  2. 使用的Operator必须支持BatchMode
  3. 不需要Watermark,执行结束时会发出一个最大时间戳的Watermark用来结束执行
  4. 不需要checkpoint
  5. 批量执行,结果为insert-only流

2. BatchMode和StreamMode转换注意点

BatchMode比StreamingMode更高效。StreamingMode也可以处理bounded stream,但是并不推荐使用StreamingMode来进行批处理,而且像全局排序这种StreamingMode也实现不了

如果将StreamMode转换为BatchMode,需要注意StreamMode的结果有时是changelog流,而BatchMode的结果只有insert-only流

3. 触发计算的API

  • tEnv.executeSql("…")
  • table.executeInsert(targetTable)
  • table.execute(),表示将表的数据收集到本地
  • stateSet.execute()
  • streamExecutionEnvironment.execute()

4. 查询优化

包括一系列基于规则和成本的优化,例如:

  • 投影剪裁
  • 分区剪裁
  • 过滤器下推
  • 子计划消除重复数据以避免重复计算
  • 特殊子查询重写,包括两部分:
    • 将in和exists转换为left semi-joins
    • 将not in和not exists转换为left anti-join
  • 可选join重新排序,通过tEnv.getConfig().getConfiguration().setString(“table.optimizer.join-reorder-enabled”, “false”)进行设置
  • 从数据源获得的丰富统计信息以及每个算子(例如 io,cpu,网络和内存)的细粒度成本来做出明智的决策
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值