Flink Sql的文件滚动的探究
背景
最近有一次在使用flink sql connector的过程当中,我们使用flink kafka connector将kafka中读取出来的数据存储到hdfs中,写到hdfs的connector 是使用flink自带的filesystem connector写到hdfs的文件系统当中。
在实际的使用当中,我们调整了如下参数
开始配置参数
auto-compaction = true
compaction.file-size = 128MB
sink.rolling-policy.file-size=128MB
sink.rolling-policy.rollover-interval = 1h
...
上述配置的预计是想让这个flink connector自动聚合,然后文件大小为128MB的时候滚动一下,或者在时间为一个小时的时候滚动一下文件。
但是在实践当中我们遇到了以下几个问题:
flink程序输出的文件没有被标记为finshed状态
在程序启动的时候,如果flink程序获取到了数据之后,然后向kafka输入的时候,flink程序生成的文件会有inprogress的字样。这样的文件会导致下游的程序无法正常的读取。
处理办法
在flink的程序当中,设置flink的checkpoint 当时我们将checkpoint配置后,发现文件能够从`inprogress`的状态,变为`finshed`的状态。

本文探讨了Flink SQL在文件滚动过程中遇到的问题,包括文件未标记为finished状态和产生过多小文件。解决方案涉及配置参数调整,如auto-compaction参数,以确保文件在checkpoint后正确合并并达到预期的滚动策略。
最低0.47元/天 解锁文章
1845

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



