flink 纯 sql 写法,怎么处理异常?遇到一条数据错误,导致后续数据都堵住了。想实现能跳过异常的。
Flink 纯 SQL 写法可以使用 TRY_WITH_RESOURCE 语句来处理异常。TRY_WITH_RESOURCE 语句有 3 个子句:TRY、CATCH 和 FINALLY。TRY 子句中包含正常的业务逻辑。如果 TRY 子句中出现异常,则会执行 CATCH 子句。CATCH 子句中可以处理异常,也可以跳过异常。FINALLY 子句中包含无论如何都会执行的逻辑。
以下是一个处理异常的 TRY_WITH_RESOURCE 语句:
SELECT FROM table
TRY WITH resource AS (
SELECT FROM tableA
)
CATCH (
e: IOException) AS (
CAST(e.getMessage() AS STRING)
)
FINALLY
SELECT FROM resource
在上述语句中,我们使用 TRY_WITH_RESOURCE 语句来处理 IOException 异常。在 TRY 子句中,我们使用 SELECT FROM tableA 语句从 tableA 表中读取数据。如果 SELECT FROM tableA 语句出现异常,则会捕获异常并记录日志。在 CATCH 子句中,我们使用 CAST(e.getMessage() AS STRING) 语句将异常的错误信息转换为字符串类型。在 FINALLY 子句中,我们使用 SELECT FROM resource 语句从 resource 资源中读取数据。
使用 TRY_WITH_RESOURCE 语句处理异常可以避免后续数据被堵住。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。