【问题标题】:Flume HDFS sink: Remove timestamp from filenameFlume HDFS sink:从文件名中删除时间戳
【发布时间】:2015-11-20 06:17:27
【问题描述】:

我已经为我的应用程序配置了flume代理,其中source是Spooldir,sink是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 flume flume-ng


    【解决方案1】:

    似乎无法仅通过使用配置来删除时间戳。如果您查看 HDFS Sink 的工作原理,您会发现以下内容:

    long counter = fileExtensionCounter.incrementAndGet();
    String fullFileName = fileName + "." + counter;
    

    fileExtensionCounterfileExtensionCounter = new AtomicLong(clock.currentTimeMillis());

    您可以检查接收器的代码herehere 的作者。

    如果您想要将更多事件放在一个文件中,那么您可以查看接收器属性

    • rollTime
    • rollSize
    • rollCount
    • batchSize

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 2013-12-03
      相关资源
      最近更新 更多