ETL 小技巧:文件输出插件数据写入空闲时间阈值配置及作用
缓冲区技术可以带来非常棒的数据写入性能提升,因此在网络传输、文件 IO 操作中应用都非常广泛,但是缓冲区技术在带来性能提升的同时,也派生出一个典型的问题:缓冲区一般都会设定一个缓冲区大小,只有当缓冲区数据满了或者强制 Flush 缓冲区数据,才会触发缓冲区数据落盘处理,如果数据源头迟迟没有往缓冲区添加数据,外部又没有触发强制 Flush 缓冲区操作,由于缓冲区数据未满,这样数据会一直驻留在缓冲区内存中,迟迟不能写入目标库,导致用户无法看到或者查询到这些数据:
bboss 文件输出插件同样采用了缓冲区技术,这样有助于将数据高速写入文件,为了避免出现缓冲区数据不满的情况下,数据迟迟不能写入文件,bboss 引入了数据写入空闲时间阈值配置机制,定时检查数据写入缓冲区空闲时间,一旦达到数据写入缓冲区空闲时间达到指定的阈值,缓冲区有数据,则强制 flush 数据到文件中,保证数据及时落盘处理。
bboss 文件输出插件写入空闲时间阈值配置及控制机制说明:
maxForceFileThreshold 单位:秒,设置文件数据写入空闲时间阈值,如果空闲时间内没有数据到来,则进行文件切割或者 flush 数据到文件处理。文件切割记录规则:达到最大记录数或者空闲时间达到最大空闲时间阈值,进行文件切割 。如果不切割文件,达到最大最大空闲时间阈值,当切割文件标识为 false 时,只执行 flush 数据操作,不关闭文件也不生成新的文件,否则生成新的文件。本属性适用于文件输出插件与 kafka、mysql binlog 、fileinput 等事件监听型的输入插件配合使用,其他类型输入插件无需配置(因为调度作业任务结束时会强制 flush 缓冲区数据)。
切割文件配置实例:
flush 数据配置实例:
Excel 输出插件不支持仅 flush 功能,如果设置了 maxForceFileThreshold 时,必须设置 MaxFileRecordSize,进行文件切割。
bboss 插件使用指南:
https://esdoc.bbossgroups.com/#/datatran-plugins
bboss 视频教程
评论