Flink DataStream任务优化为Flink SQL

本文介绍了将原有的Flink DataStream任务优化为Flink SQL的过程,包括解决Canal JSON消息格式问题,实现字符串包含判断函数,启用多因素认证(MFA),处理多个Sink的写入,解决大小写敏感导致的数据丢失问题,以及利用Flink内置函数和处理嵌套JSON取值的方法。优化工作预计一周,实际仅用三天完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任务描述:
线上版本背景:之前Flink sql任务不能有多个task,也没有嵌套json解析 udf方法,所以考量用的是 DataStream 实现
优化背景:Flink 目前以实现 一个任务多个task/sink,也有 嵌套json解析 udf方法,为了方便运维,优化成使用 Flink Sql 来实现
用时估计:一星期
实际完成时间:三天(背景:之前已追踪过 Java DataStream 项目代码)

1、Caused by: java.io.IOException: Unknown "type" value "kafka". The Canal JSON message …
‘format’ = ‘canal-json’ 改为 ‘format’ = ‘json’ ,可参考 链接 ,提到了 canal-json 会调用 deserialize 方法,其会查询 key type 是 哪种 DML (update,delete,insert),其余情况则会Unknown "type" value "kafka"报错。

2、字符串包含判断函数 INTEGER POSITION( x IN y) ,功能:返回目标字符串x在被查询字符串y里第一次出现的位置。如果目标字符串x在被查询字符串y中不存在,返回值为0。

select
POSITION('in' IN 'china') as result
FROM T1; 

3、 如何启用MFA?
有个账号、二维码、密钥。
阿里云APP扫描二维码,就能获取虚拟MFA,用于登录阿里云平台了。
密钥用于windows 的Authy 应用添加账号时使用,就能用windows获取虚拟MFA了。

4、写入多个Sink 的语法,不然会报错。

-- 开始任务
BEGIN STATEMENT SET;      --写入多个Sink时,必填。
...
END;      --写入多个Sink时,必填。

5、source kafka ,sink holo ,发生部分字段值未sink过来,找了半天问题发现是有带大写字母的字段,即获取时,key值是大小写敏感的,传全小写值是获取不到的。
6、 Flink内置函数
7、JSON取值 实现:

--简单 JSON值 获取
select JSON_VALUE('{"aid":"5awplkboi3nr4rpmhkrvex11Bfopln6"}'
, '$.aid') as aid; <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值