博客
关于我
Flink资料合集
阅读量:666 次
发布时间:2019-03-15

本文共 1135 字,大约阅读时间需要 3 分钟。

Flink SQL 运维与优化指南

一、需求与问题

需求一:数据汇总优化

在 Flink SQL 中,每1分钟汇总一次当天数据。频繁的写入操作导致数据库记录过多,建议开启 minibatch 模式,以提高处理效率。具体设置如下:

  • settable.exec.mini-batch.enabled= true;
  • settable.exec.mini-batch.allow-latency= 10s;
  • settable.exec.mini-batch.size= 100000;

需求二:数据持久化

Flink SQL 的 GROUP BY 操作生成的数据是 CDC 类型,无法直接删除。建议启用动态表选项,避免数据丢失:

  • settable.dynamic-table-options.enabled= true;
  • 使用 /*+OPTIONS('maxwell-json-ext.ignore-delete' = 'true', 'maxwell-json-ext.update-to-insert' = 'true')*/ 忽略删除操作。

需求三:自动生成测试数据

使用 DataGen 连接器在 Flink 1.11 中生成随机测试数据。详细配置方法请参考 官方文档

需求四:字符串分割处理

实现自定义表函数,将字符串分割为多列:

  • 创建 SplitFunction 类,继承 TableFunction
  • 使用 str.split(" ") 分割字符串,输出每个分割结果及其长度。
  • 注册表函数并在 SQL 中调用。

需求五:字段空值处理

在 Flink SQL 中,使用 cast(null as dataType) 来表示字段为空。

需求六:数据恢复

平台无法正常启动时,设置 Kafka 消费起始时间:

  • set 'scan.startup.mode' = 'timestamp';
  • set 'scan.startup.timestamp-millis' = '1617551100000';

二、问题与解决方案

问题一:类型映射错误

MySQL tinyint 类型在 Flink 上可能映射失败。修改数据库连接参数:

  • URL 格式:jdbc:mysql://...?tinyInt1isBit=false

详细解决方案请参考 技术博客

问题三:状态膨胀

解决方法请参考 腾讯云开发文章

问题四:最终结果丢失

通过双写至 HBase 对比数据,发现问题通常出在 MySQL 主键定义不一致。确保 Flink 平台和数据库主键一致。

三、总结

以上内容涵盖了 Flink SQL 的常见需求与问题解决方案,希望对您的项目有所帮助。

你可能感兴趣的文章
oracle 创建字段自增长——两种实现方式汇总
查看>>
Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
查看>>
oracle 可传输的表空间:rman
查看>>
Oracle 启动监听命令
查看>>
oracle 学习
查看>>
ORACLE 客户端工具连接oracle 12504
查看>>
oracle 行转列
查看>>
Oracle 表
查看>>
Oracle 递归
查看>>
oracle 逻辑优化,提升高度,综合SQL上下文进行逻辑优化
查看>>
oracle 闪回关闭,关闭闪回即disable flashback的操作步骤
查看>>
oracle 限制用户并行,insert /*parallel */ 到不同用户,并行起不来的问题
查看>>
oracle--用户,权限,角色的管理
查看>>
oracle00205报错,Oracle控制文件损坏报错场景
查看>>
Oracle10g EM乱码之快速解决
查看>>
Oracle10g下载地址--多平台下的32位和64位
查看>>
Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
查看>>
Oracle11G基本操作
查看>>
Oracle11g服务详细介绍及哪些服务是必须开启的?
查看>>
Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
查看>>