flume1.8实现hdfsSink整点滚动文件

由于官方的1.8版本hdfs-sink不能在每天的0点滚动文件,所以修改了flume-hdfs-sink源码。

flume-hdfs-sink中修改了HDFSEventSink.java文件,其他文件未改动。

使用该程序打包,替换掉官方到flume-hdfs-sink.jar(建议备份一份), 也可以直接下载编译后的jjar包。

然后在配置hdfsSink时增加以下配置项
timeRollerFlag     

默认值: day

可以设置minutes, hour, day 

minutes 每分钟滚动文件

hour 每小时滚动文件

day 每天0点滚动文件

 
 
 
 
 
 
 
 
 
 
hdfsSink的配置如下:
paas2.sinks.k1.type = hdfs
paas2.sinks.k1.hdfs.path = hdfs://ns1/user/hive/warehouse/dw_stg.db/tg_paas_business/dt=%Y%m%d
paas2.sinks.k1.hdfs.filePrefix = paas_business_%Y%m%d
paas2.sinks.k1.hdfs.fileSuffix = .json
paas2.sinks.k1.hdfs.rollInterval = 0
paas2.sinks.k1.hdfs.rollCount = 0
paas2.sinks.k1.hdfs.round = false
paas2.sinks.k1.hdfs.roundValue=12
paas2.sinks.k1.hdfs.roundUnit=hour
paas2.sinks.k1.hdfs.rollSize = 134217728
paas2.sinks.k1.hdfs.fileType = DataStream
paas2.sinks.k1.hdfs.timeRollerFlag=day

源程序gitee地址如下:

https://gitee.com/pang123/flume-hdfs-sink-king

编译后的jar包如下地址:

https://gitee.com/pang123/flume-hdfs-sink-king/tree/master/target_jar

原文地址:https://www.cnblogs.com/30go/p/9962933.html