2016-06-21 2 views
0

こんにちは私はfloolを使用してファイルをチャネルとしてファイルをHDFSにコピーしています。以上のように構成されたflumeはまだ.tmpファイルを保持し、ファイルを完全にHDFSにコピーしない

#Component names 
a1.sources = src 
a1.channels = c1 
a1.sinks = k1 

#Source details 
a1.sources.src.type = spooldir 
a1.sources.src.channels = c1 
a1.sources.src.spoolDir = /home/cloudera/onetrail 
a1.sources.src.fileHeader = false 
a1.sources.src.basenameHeader = true 
# a1.sources.src.basenameHeaderKey = basename 
a1.sources.src.fileSuffix = .COMPLETED 
a1.sources.src.threads = 4 
a1.sources.src.interceptors = newint 
a1.sources.src.interceptors.newint.type = timestamp 

#Sink details 
a1.sinks.k1.type = hdfs 
a1.sinks.k1.channel = c1 
a1.sinks.k1.hdfs.path = hdfs:///data/contentProviders/cnet/%Y%m%d/ 
# a1.sinks.k1.hdfs.round = false 
# a1.sinks.k1.hdfs.roundValue = 1 
# a1.sinks.k1.hdfs.roundUnit = second 
a1.sinks.k1.hdfs.writeFormat = Text 
a1.sinks.k1.hdfs.fileType = DataStream 
#a1.sinks.k1.hdfs.file.Type = DataStream 
a1.sinks.k1.hdfs.filePrefix = %{basename} 
# a1.sinks.k1.hdfs.fileSuffix = .xml 
a1.sinks.k1.threadsPoolSize = 4 

# use a single file at a time 
a1.sinks.k1.hdfs.maxOpenFiles = 1 

# rollover file based on maximum size of 10 MB 
a1.sinks.k1.hdfs.rollCount = 0 
a1.sinks.k1.hdfs.rollInterval = 0 
a1.sinks.k1.hdfs.rollSize = 0 
a1.sinks.k1.hdfs.batchSize = 12 

# Channel details 
a1.channels.c1.type = file 
a1.channels.c1.checkpointDir = /tmp/flume/checkpoint/ 
a1.channels.c1.dataDirs = /tmp/flume/data/ 

# Bind the source and sink to the channel 
a1.sources.src.channels = c1 
a1.sinks.k1.channels = c1 

HDFSにファイルをコピーすることができますが、私は直面しています問題は、一つのファイルである完全なファイルの内容をコピーするの.tmpとして滞在しておくとではありません。

問題が発生する可能性がある人に役立つことがあります。

答えて

0

.tmpファイルは、Flumeによって「ロール」されると、最終的な名前に変更されます。

ロールオーバー設定はすべて0です。これは、「ストリームを永遠に維持する」ことを意味します。

1つ以上の値を0以外の値に設定すると、Flumeはファイルを閉じて、次のファイルを開くことができると判断します。

詳細については、documentation here on Flume Sinksを参照してください。

関連する問題