您可以使用作业调试功能模拟作业运行、检查输出结果,验证SELECT或INSERT业务逻辑的正确性,提升开发效率,降低数据质量风险。
背景信息
作业调试功能支持您在控制台本地验证作业逻辑的正确性而不会将数据实际写入您生产的下游中(无论您使用什么样的结果表)。使用调试功能时,您可以使用上游的线上数据或指定调试数据。调试可以包含多个SELECT或INSERT的复杂作业。此外,查询语句支持UPSERT,即可以执行count(*)
等包含更新操作的语句。
前提条件
已创建用于作业调试的Session集群,因为系统在作业调试前会检测是否有可用于SQL Preview的Session集群,如果无Session集群时,则会提示并引导您配置用于SQL
Preview的Session集群。配置Session集群详情请参见配置开发测试环境(Session集群)。
使用限制
- 仅SQL作业支持单击执行进行作业调试,Python作业和Datastream作业均不支持单击执行进行作业调试。
- VVR 4.0.8及以下版本的Session集群不支持调试CDC源表,因为CDC源表不是Append-only模式的。
操作步骤
- 进入作业开发页面,新建SQL作业。
- 登录实时计算控制台。
- 在Flink全托管页签,单击目标工作空间操作列下的控制台。
- 在左侧导航栏,单击作业开发。
- 单击新建。
- 填写完作业信息后,单击确认。
作业类型必须选择SQL。
- 分别注册源表和结果表。
分别编写源表和结果表SQL代码后,单击
执行。注册成功的表会出现在Schemas页签中的Tables列表中,您可以单击表名,查看表的字段和数据类型信息。以注册datagen源表、blackhole结果表和blackhole_cnt结果表为例,示例代码如下:
- datagen源表
CREATE TABLE `vvp`.`default`.`datagen` (
`id` VARCHAR(2147483647),
`name` VARCHAR(2147483647)
) WITH (
'connector' = 'datagen',
'rows-per-second' = '5'
);
- blackhole结果表
CREATE TABLE `vvp`.`default`.`blackhole` (
`id` VARCHAR(2147483647),
`name` VARCHAR(2147483647)
) WITH (
'connector' = 'blackhole'
);
- blackhole_cnt结果表
CREATE TABLE `vvp`.`default`.`blackhole_cnt` (
`cnt` BIGINT
) WITH (
'connector' = 'blackhole'
);
- 编写调试DML语句。
以从datagen中读取数据后,一个直接写入blackhole中,另一个取总数后写入blackhole_cnt中为例,代码如下。
BEGIN STATEMENT SET;
insert into blackhole
select *
from datagen;
insert into `blackhole_cnt`
select count(*)
from `datagen`;
END;
- 单击验证。
在SQL编辑页面下方,您可以看到SQL语法校验结果,只有通过校验的SQL才能被执行。
- 单击执行。
- 配置调试数据。
如果您使用线上数据,直接单击
执行即可。如果您需要使用调试数据,需要先上传调试数据。

参数解释如下表所示。
配置项 |
说明 |
下载调试数据模板 |
为了便于编辑,您可以直接下载调试数据模版,模版已适配源表的数据结构。 |
上传调试数据 |
如果您需要使用本地调试数据进行调试,您可以先下载好调试数据模板,本地编辑好数据后上传,并选中使用调试数据。
调试数据文件存在以下限制:
- 上传文件仅支持CSV格式。
- CSV格式的文件必须含有表头,例如 id(INT)。
- 调试数据CSV文件最大支持1 MB或1千条记录。
|
预览数据 |
上传好调试数据后,单击源表名称左侧的 图标,可以预览数据和下载调试数据。
|
执行代码预览 |
调试功能会自动改变源表和结果表的DDL代码,但不会改变作业中的实际代码。您可以在下方预览代码详情。 |
- 确定好调试数据后,单击执行。
单击
执行后,会在SQL编辑器下方显示调试结果。
说明 Flink全托管默认读取最多1000条数据后会自动暂停。