2016-01-13 6 views
1

В настоящее время я использую версию Flume: 1.5.2.Flume, создающий пустую строку в конце выходного файла в HDFS

Flume, создающий пустую строку в конце каждого выходного файла в HDFS, который вызывает количество строк, размеры файлов & контрольная сумма не соответствует исходным и целевым файлам.

Я попытался переопределить значения параметров по умолчанию roolSize, batchSize и appendNewline, но все еще не работает.

Flume Также изменения EOL от CRLF (Исходный файл) для LF (выходной_файл), это также вызывает размер файла отличаться

Ниже связанные параметры конфигурации желобе агента Я использую

agent1.sources = c1 
agent1.sinks = c1s1 
agent1.channels = ch1 

agent1.sources.c1.type = spooldir 
agent1.sources.c1.spoolDir = /home/biadmin/flume-test/sourcedata1 
agent1.sources.c1.bufferMaxLineLength = 80000 
agent1.sources.c1.channels = ch1 
agent1.sources.c1.fileHeader = true 
agent1.sources.c1.fileHeaderKey = file 
#agent1.sources.c1.basenameHeader = true 
#agent1.sources.c1.fileHeaderKey = basenameHeaderKey 
#agent1.sources.c1.filePrefix = %{basename} 
agent1.sources.c1.inputCharset = UTF-8 
agent1.sources.c1.decodeErrorPolicy = IGNORE 
agent1.sources.c1.deserializer= LINE 
agent1.sources.c1.deserializer.maxLineLength = 50000 
agent1.sources.c1.deserializer= 
org.apache.flume.sink.solr.morphline.BlobDeserializer$Builder 
agent1.sources.c1.interceptors = a b 
agent1.sources.c1.interceptors.a.type =  
org.apache.flume.interceptor.TimestampInterceptor$Builder 
agent1.sources.c1.interceptors.b.type = 
org.apache.flume.interceptor.HostInterceptor$Builder 
agent1.sources.c1.interceptors.b.preserveExisting = false 
agent1.sources.c1.interceptors.b.hostHeader = host 

agent1.channels.ch1.type = memory 
agent1.channels.ch1.capacity = 1000 
agent1.channels.ch1.transactionCapacity = 1000 
agent1.channels.ch1.batchSize = 1000 
agent1.channels.ch1.maxFileSize = 2073741824 
agent1.channels.ch1.keep-alive = 5 
agent1.sinks.c1s1.type = hdfs 
agent1.sinks.c1s1.hdfs.path = hdfs://bivm.ibm.com:9000/user/biadmin/ 
flume/%y-%m-%d/%H%M 
agent1.sinks.c1s1.hdfs.fileType = DataStream 
agent1.sinks.c1s1.hdfs.filePrefix = %{file} 
agent1.sinks.c1s1.hdfs.fileSuffix =.csv 
agent1.sinks.c1s1.hdfs.writeFormat = Text 
agent1.sinks.c1s1.hdfs.maxOpenFiles = 10 
agent1.sinks.c1s1.hdfs.rollSize = 67000000 
agent1.sinks.c1s1.hdfs.rollCount = 0 
#agent1.sinks.c1s1.hdfs.rollInterval = 0 
agent1.sinks.c1s1.hdfs.batchSize = 1000 
agent1.sinks.c1s1.channel = ch1 
#agent1.sinks.c1s1.hdfs.codeC = snappyCodec 
agent1.sinks.c1s1.hdfs.serializer = text 
agent1.sinks.c1s1.hdfs.serializer.appendNewline = false 

HDFS. serializer.appendNewline не исправила проблему.
Может ли кто-нибудь проверить и предложить ..

ответ

0

Замените нижеследующую линию в своем фломастере.

agent1.sinks.c1s1.serializer.appendNewline = false 

со следующей линией и дайте мне знать, как это происходит.

agent1.sinks.c1s1.hdfs.serializer.appendNewline = false 
+0

Спасибо Раджеш для смотреть на это. Я все еще получаю разницу в размере файла, как показано ниже. – kasi

+0

Я все еще получаю разницу в размере файла. biadmin @ bivm: ~/Desktop/work/flume-test/sourcedata1> hadoop fs -copyToLocal hdfs: //bivm.ibm.com: 9000/user/biadmin/flume/home/biadmin/Desktop/work/flume-test/sourcedata1/TermDefinition.csv.1452750041843.csv biadmin @ bivm: ~/Desktop/work/flume-test/sourcedata1> ls -l всего 8 -rw-r - r-- 1 biadmin biadmin 754 14 янв 00: 42 TermDefinition.csv.1452750041843.csv -rwxrw-rw- 1 biadmin biadmin 767 14 января 00:06 TermDefinition.csv.COMPLETED biadmin @ bivm: ~/Desktop/work/flume-test/sourcedata1> – kasi

+0

Мои наблюдения таковы: EOL меняется с CRLF на LF из-за этого Размер файла становится разным. Я не могу поделиться файлом conf, поскольку этот раздел комментариев имеет ограничение на no.of символов, которые должны быть заполнены. Не могли бы вы предложить, как решить эту проблему. – kasi

0

Заменить

agent1.sinks.c1s1.hdfs.serializer = text 
agent1.sinks.c1s1.hdfs.serializer.appendNewline = false 

с

agent1.sinks.c1s1.serializer = text 
agent1.sinks.c1s1.serializer.appendNewline = false 

Разница, что настройки Serializer не установлены на HDFS префикс, а непосредственно на имя раковине.

Документация на Flume должна иметь некоторый пример, так как я также попал в проблемы, потому что я не заметил, что сериализатор установлен на другом уровне имени свойства.

Дополнительная информация о HDFS раковине можно найти здесь: https://flume.apache.org/FlumeUserGuide.html#hdfs-sink

Смежные вопросы