您当前的位置: 首页 >  sql

Bulut0907

暂无认证

  • 3浏览

    0关注

    346博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

Bulut0907 发布时间:2022-02-14 12:52:33 ,浏览量:3

目录
  • 1. BatchMode的特点
  • 2. BatchMode和StreamMode转换注意点
  • 3. 触发计算的API
  • 4. 查询优化

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,网络和内存)的细粒度成本来做出明智的决策
关注
打赏
1664501120
查看更多评论
立即登录/注册

微信扫码登录

0.0382s