写点什么

ETL 小技巧:文件输出插件数据写入空闲时间阈值配置及作用

作者:大河
  • 2023-08-22
    湖南
  • 本文字数:1051 字

    阅读完需:约 3 分钟

ETL 小技巧:文件输出插件数据写入空闲时间阈值配置及作用

缓冲区技术可以带来非常棒的数据写入性能提升,因此在网络传输、文件 IO 操作中应用都非常广泛,但是缓冲区技术在带来性能提升的同时,也派生出一个典型的问题:缓冲区一般都会设定一个缓冲区大小,只有当缓冲区数据满了或者强制 Flush 缓冲区数据,才会触发缓冲区数据落盘处理,如果数据源头迟迟没有往缓冲区添加数据,外部又没有触发强制 Flush 缓冲区操作,由于缓冲区数据未满,这样数据会一直驻留在缓冲区内存中,迟迟不能写入目标库,导致用户无法看到或者查询到这些数据:

bboss 文件输出插件同样采用了缓冲区技术,这样有助于将数据高速写入文件,为了避免出现缓冲区数据不满的情况下,数据迟迟不能写入文件,bboss 引入了数据写入空闲时间阈值配置机制,定时检查数据写入缓冲区空闲时间,一旦达到数据写入缓冲区空闲时间达到指定的阈值,缓冲区有数据,则强制 flush 数据到文件中,保证数据及时落盘处理。

bboss 文件输出插件写入空闲时间阈值配置及控制机制说明:

maxForceFileThreshold 单位:秒,设置文件数据写入空闲时间阈值,如果空闲时间内没有数据到来,则进行文件切割或者 flush 数据到文件处理。文件切割记录规则:达到最大记录数或者空闲时间达到最大空闲时间阈值,进行文件切割 。如果不切割文件,达到最大最大空闲时间阈值,当切割文件标识为 false 时,只执行 flush 数据操作,不关闭文件也不生成新的文件,否则生成新的文件。本属性适用于文件输出插件与 kafka、mysql binlog 、fileinput 等事件监听型的输入插件配合使用,其他类型输入插件无需配置(因为调度作业任务结束时会强制 flush 缓冲区数据)。

切割文件配置实例:

fileOutputConfig.setMaxFileRecordSize(100);//达到最大记录数100,切割文件fileOutputConfig.setMaxForceFileThreshold(60);//默认每5秒扫描,上次写入数据后,是否已经超过60秒没有新数据写入,如果没有并且缓存中有数据,则切割生成文件,否则不做任何处理
复制代码

flush 数据配置实例:

//fileOutputConfig.setMaxFileRecordSize(100);//注释掉切割文件功能,达到最大记录数100,切割文件fileOutputConfig.setMaxForceFileThreshold(60);//默认每5秒扫描,上次写入数据后,是否已经超过60秒没有新数据写入,如果没有并且缓存中有数据,则flush数据,否则不做处理
复制代码

Excel 输出插件不支持仅 flush 功能,如果设置了 maxForceFileThreshold 时,必须设置 MaxFileRecordSize,进行文件切割。

bboss 插件使用指南:

https://esdoc.bbossgroups.com/#/datatran-plugins

bboss 视频教程

https://www.bilibili.com/video/BV1o44y1w7VP

用户头像

大河

关注

开源项目bboss作者 2022-08-15 加入

https://www.bbossgroups.com

评论

发布
暂无评论
ETL 小技巧:文件输出插件数据写入空闲时间阈值配置及作用_缓冲区_大河_InfoQ写作社区