flink sql 下推 类

SupportsFilterPushDown,将 Filter 条件下推到 Scan 里,从而减少 Scan 的读 IO,以提高性能。
SupportsProjectionPushDown,告诉 Scan 只读取必要的字段,减少无效的字段读取。
SupportsPartitionPushDown,在静态优化时,告诉 Scan 只需要读取有效分区,避免无效分区读取。
SupportsDynamicFiltering,在作业运行时,动态识别出哪些分区是有效的,避免无效分区读取。
SupportsLimitPushDown,将 limit 值下推到 Scan 里,只需要读取 limit 条数据即可,大大减少了 Scan I/O。
SupportsAggregatePushDown,直接从 Scan 中读取聚合结果,减少 Scan 的读 I/O,同时输出给下游的数据更少。
SupportsStatisticReport,Connector 汇报统计信息给优化器,以便优化器产生更优的执行计划。
Flink SQL 是 Apache Flink 提供的用于处理流式和批处理数据的 SQL 查询引擎。它可以将 SQL 查询转换为 Apache Flink 的数据流程序,实现了将传统的 SQL 查询能力与流处理引擎相结合的功能。 Flink SQL 实现原理如下: 1. 解析和验证:Flink SQL 首先会对输入的 SQL 查询进行语法解析和语义验证。这一步骤会检查查询语句是否符合 SQL 语法规范,并且会验证查询中使用的表、字段、函数等是否存在和正确。 2. 逻辑优化:在逻辑优化阶段,Flink SQL 会对解析和验证后的查询语句进行优化。优化的目标是根据查询的语义和数据流特性,找到更高效的执行计划。这一步骤包括了选择合适的算子顺序、谓词下推、投影消除等优化技术。 3. 物理优化:在物理优化阶段,Flink SQL 会将逻辑执行计划转换为物理执行计划。物理执行计划定义了具体的算子操作和数据流传输方式。Flink SQL 会根据查询的特性和运行环境进行物理优化,例如选择合适的并行度、选择合适的连接策略等。 4. 执行计划生成:在执行计划生成阶段,Flink SQL 会将物理执行计划转换为具体的代码实现。Flink SQL 会根据查询中使用的算子和操作,生成相应的代码片段,并将其编译为可执行的任务。 5. 数据处理和运行时:在数据处理和运行时阶段,Flink SQL 会将生成的任务提交到 Flink 集群中执行。Flink SQL 会负责数据的输入、处理和输出,以及任务的调度和执行。它会利用 Flink 的流式处理引擎来处理输入的流式和批处理数据。 总之,Flink SQL 实现原理包括了解析和验证、逻辑优化、物理优化、执行计划生成以及数据处理和运行时等多个阶段,通过这些阶段将 SQL 查询转换为 Flink 的数据流程序,并在 Flink 集群中执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值