flink sql - 问题系列与解决系列集合

flink 任务物理内存溢出

报表信息:
Container [pid=12539,containerID=container_e166_1650382930878_534192_01_000014] is running 32768B beyond the ‘PHYSICAL’ memory limit. Current usage: 2.0 GB of 2 GB physical memory used; 4.1 GB of 4.2 GB virtual memory used. Killing container.
原因分析:
参考:https://developer.aliyun.com/article/780954

总结:
1、RocksDB Native 内存的不确定性,Flink 通过设置 RocksDB 的内存参数间接影响其内存使用。然而,目前 Flink 是通过估算得出这些参数,并不是非常精确的值。
2、glibc Thread Arena 问题【 64 MB 问题】
3、JDK8 Native 内存泄漏 , 建议升级jdk版本

不能完全解决,缓解方法
1、flink-conf.yaml添加参数:containerized.taskmanager.env.MALLOC_ARENA_MAX: 1
2、提高 Flink 的 JVM Overhead 分区容量【以下选一种即可

  1. jobmanager.memory.jvm-overhead.fraction:0.2
  2. taskmanager.memory.jvm-overhead.fraction:0.2
  3. jobmanager.memory.jvm-overhead.max/min:1gb
  4. taskmanager.memory.jvm-overhead.max/min:1 gb

flink ETL中当前日期无法再次触发当前日期函数计算

问题描述:flink etl sql 中使用了当前时间/日期 - 表记录中的某个时间/日期字段,若某个id的记录在历史时间已经被计算过,但是在今天或者每天再取这个时间的差值,实际上这个差值是少了记录时间到当前时间的时间差,会导致数据不一致。
解决 实际上,解决方法在问题描述中已经写出来了。新增记录计算时间,此时计算的日期差值没有问题,然后随着时间推移当前时间不断变化,然而flink etl 任务的当前时间还是历史的当前时间,不会再被触发计算【记录被修改除外】,此时需要使用**(当前时间 - 记录的计算时间) + 已计算好的日期差值 = 当前时间 - 记录日期的差值**

备注:后续会补充其他问题的解决方法

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...
win11本地账户怎么改名?win11很多操作都变了样,用户如果想要...