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