任务描述:
线上版本背景:之前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; <

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

被折叠的 条评论
为什么被折叠?



