由于官方的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