You need to enable JavaScript to run this app.
流式计算 Flink版

流式计算 Flink版

复制全文
开发 Flink 任务
使用 SQL 深度检查
复制全文
使用 SQL 深度检查

SQL 深度检查能力是一项 SQL 引擎侧的增强能力,旨在提升产品的易用性。深度检查能够在校验阶段,提前检查作业的 SQL 语法语义、网络连通性以及作业使用的表的元数据信息,并提示 SQL 风险问题,给出对应的 SQL 优化建议,对云上用户 Flink SQL 的日常使用、深度使用有较大的帮助。
深度检查包含如下功能:

  • 语法语义检查:对常见报错展示明确的原因和解决方案
  • 网络连通性检查:检测常见 Connector 的数据源的网络连通问题
  • 正确性和优化建议:检测流式 SQL 里的正确性问题(如非确定更新问题),和优化建议

前提条件

使用方式

在 Flink 1.16 & 1.17 SQL 任务中,点击“验证”按钮后,如下:

点击后会弹出一个选择框,点选“开启深度检查”,并根据作业版本,选择对应资源池的 Session 集群,之后点击深度检查:

校验结果展示:

功能介绍

语法语义检查

分析常见的语法语义问题,并给出报错原因和解决方案。
校验结果展示:

目前已支持的报错类型如下:

校验报错类型

报错原因

SQL-Syntax-Error

不符合 SQL 语法规则,报错的位置在第 ${2} 行第 ${3} 列的 ${1}

Old-Begin-Statement-Set-Not-Support

一般是使用了 BEGIN STATEMENT SET ... END 这种被社区废弃的语法,一般来自于从其它厂商搬迁的 SQL

Table-Name-Not-Found

${5} 表或视图不存在,报错的文本位置是从第 ${1} 行第 ${2} 列到第 ${3} 行第 ${4} 列

Column-Name-Not-Found

${5} 列不存在,报错的文本位置是从第 ${1} 行第 ${2} 列到第 ${3} 行第 ${4} 列

Function-Argument-Type-Mismatch

${1} 函数入参类型不匹配。当前的入参类型为 ${2},支持的入参类型为 ${3}

Function-Argument-Number-Mismatch

${1} 函数入参个数不匹配,预期入参个数是 ${2}

Function-Not-Found

${1} 函数不存在,报错的文本位置是从第 ${1} 行第 ${2} 列到第 ${3} 行第 ${4} 列

Illegal-Use-of-NULL

不支持 untyped NULL literal,报错的文本位置是从第 ${1} 行第 ${2} 列到第 ${3} 行第 ${4} 列

Union-Type-Mismatch

不支持 UNION 隐式类型转换,报错的文本位置是从第 ${1} 行第 ${2} 列到第 ${3} 行第 ${4} 列

Query-Sink-Columns-Number-Mismatch

${1} 表的查询和写入 Sink 的字段个数不一致

Query-Sink-Columns-Type-Incompatible

${1} 表的查询和写入 Sink 的第 ${2} 个字段 ${3} 类型不一致

Metadata-Key-Not-Found

表 ${3} 的元数据列 ${1} 不存在

Connector-Option-Not-Support

${1} connector option 不支持 ${2}

Connector-SPI-Not-Found

Connector SPI 查找时,没找到 Connector identifier ${1} 对应的 DynamicTableFactory class

Query-Sink-Schema-Mismatch

${1} 表的查询和写入 Sink 的字段个数不一致,以及列类型是否一致

Implicit-Type-Conversion-Not-Support

${1} 和 ${2} 的隐式类型转换不支持

网络连通性检查

会检测各 Connector 数据源 endpoint 的 ip 和 port 的网络连通性,如果网络访问不通,则快速报错。会先对所有 ip 进行检测,如果 ip 连通失败,则直接报错。如果 ip 都能连通,则继续检测所有 ip 和 port 的组合,如果连通失败,则直接报错,反之,则正常通过。
报错提示信息:

  • ip 连通失败
  • ip 和 port 连通失败

目前已覆盖常见的 15 种 Connector:

Connector 类型

Serverless Flink 1.16

Serverless Flink 1.17

kafka

支持

支持

upsert-kafka

支持

支持

jdbc

支持

支持

mysql-cdc

支持

支持

mongo-cdc

支持

支持

postgres-cdc

支持

支持

sqlserver-cdc

支持

支持

bytehouse-cdw

支持

支持

bytehouse-ce

支持

支持

redis(single-node 模式)

支持

支持

redis(cluster 模式)

支持

支持

hbase-1.4

支持

支持

hbase-2.2

支持

支持

elasticsearch-6

支持

支持

elasticsearch-7

支持

支持

starrocks

支持

支持

doris

支持

支持

rocketmq

支持

支持

正确性和优化建议

目前支持两种正确性和优化建议的检测,分别是 NDU 正确性问题和两阶段聚合优化建议。

建议类型

具体原因

NDU 正确性问题

当前作业存在数据的非确定性更新风险。常见原因包括:1.使用了不确定函数,包括标量、表值、聚合类型的内置或自定义函数,例如 RANDOM、UUID、CURRENT_TIMESTAMP 等;2.在一个变化的源表上进行 Lookup Join;3.CDC 源表携带了元数据字段(系统列,不属于物理列)。非确定性更新可能会导致产生的数据存在正确性风险。为避免这种情况,我们建议您采纳以下建议

两阶段聚合优化建议

当前作业建议开启两阶段聚合优化,通过本地预聚合,减少下游全局聚合算子处理的数据量,提升作业的聚合性能,并缓解热点问题,具体操作步骤见如下建议

校验结果展示:

最近更新时间:2025.08.28 10:49:56
这个页面对您有帮助吗?
有用
有用
无用
无用