我已经为我的应用程序配置了水槽代理,其中源是Spooldir,接收器是HDFS
我能够在hdfs中收集文件。
代理配置为:
agent.sources = src-1
agent.channels = c1
agent.sinks = k1
agent.sources.src-1.type = spooldir
agent.sources.src-1.channels = c1
agent.sources.src-1.spoolDir = /home/Documents/id/
agent.sources.src-1.deserializer=org.apache.flume.sink.solr.morphline.BlobDeserializer$Builder
agent.sources.src-1.fileHeader=true
agent.channels.c1.type = file
agent.sources.src-1.basenameHeader=true
agent.sources.src-1.basenameHeaderKey=basename
agent.sinks.k1.type = hdfs
agent.sinks.k1.channel = c1
agent.sinks.k1.hdfs.path =hdfs://localhost:8020/user/flume/events/
agent.sinks.k1.hdfs.filePrefix = %{basename}
agent.sinks.k1.hdfs.fileHeader = true
agent.sinks.k1.hdfs.fileType = DataStream
我有以下格式的hdfs文件:
/ flume / events / file1.txt.1411543838171 /flume/events/file2.txt.1411544272696
我想知道我是否可以删除时间戳记(1411543838171)/为文件名的每个事件自动生成的唯一编号?
似乎仅通过使用配置就无法删除时间戳。如果您查看HDFS Sink的工作方式,则会发现以下内容:
long counter = fileExtensionCounter.incrementAndGet();
String fullFileName = fileName + "." + counter;
fileExtensionCounter
是fileExtensionCounter = new AtomicLong(clock.currentTimeMillis());
的地方>
如果要在单个文件中放置更多事件,则可以查看接收器属性
rollTime
rollSize
rollCount
batchSize
您找到了一种方法吗?