数据开发为您提供了一套模拟的运行环境(如下图),您可以在调试环境中自定义上传数据,模拟运行,检查输出结果。业务逻辑完成后,模拟运行步骤如下。
语法检查
自动检测SQL中是否有语法错误。检测结果能够显示出错误SQL语句以及错误信息。
作业调试
作业调试步骤如下。
- 自行构建测试数据。
从数据源表中抽取数据。实时计算支持两种抽取模式。随机抽取数据模式和顺序抽取数据模式。
注意:
- 必须是用了数据存储中注册功能才可以使用。
- 抽取数据建议使用纯文本。使用EXCEL可能导致数据测试不准确。
输出调试结果
Flink SQL在调试环境中的特点
与生产环境完全隔离
调试环境下,所有的Flink SQL将在独立的调试容器运行,且所有的输出将被直接改写到调试结果屏幕。不会对线上生产流实时计算作业、线上生产的数据存储系统造成任何影响。
数据调试实际上不会真正写入到外部数据存储,而是被实时计算拦截输出到屏幕。因此,在实时计算调试完成的代码是在调试容器中完成。
说明:线上运行过程中可能由于对目标数据存储写入格式的不同导致运行失败。这类错误在调试阶段无法完全规避,在线上运行时才能发现。例如,您将结果数据输出到RDS系统。其中某些字段输出字符串数据长度大于RDS建表最大值,在Debug环境下我们无法测试出该类问题。但实际生产运行过程中会有引发异常。后续,实时计算将提供针对本地调试运行,也支持写出到真实数据存储的功能.届时可以有效辅助您缩短调试和生产的差距,有助于在调试阶段解决问题。
支持构造测试数据
调试环境下,所有的Flink SQL运行均不会从源头数据存储系统读取数据,包括DataHub的流式输入、RDS等维表输入。调试环境需要您自行构建测试数据集,并将测试数据上传到数据开发。
实时计算针对不同作业提供测试数据模板。您可以下载数据模板然后直接填写构造数据。建议您使用下载的数据模板构造数据,避免可能的格式错误。
调试分隔符
默认情况下,调试文件使用逗号作为分隔符。例如您构造了如下的测试文件。
id,name,age
1,alicloud,13
2,stream,1
在不指定调试分隔符情况下,默认使用了逗号进行分隔。但如果您需要使用JSON文件作为字段内容,字段内容已经包含了逗号。此时您需要指定其他字符作为分隔符。
注意:流计算仅支持指定单个英文字符为分隔符,不允许字符串,例如不允许’aaa’作为分隔符。如下,
id|name|age
1|alicloud|13
2|stream|1
此时您需要设置针对该作业的数据存储类型的参数,如下图。
debug.input.delimiter = |
本文转自实时计算——调试阶段