Flume: хвостохранилище не работает должным образом - PullRequest
0 голосов
/ 31 марта 2019

Хакеры Flume!

Вот что я пытаюсь сделать: Два файла A, B, оба могут содержать строки с "привет" или без "привет". Строки из обоих файлов с «hello» должны заканчиваться в локальном файле X, а строки без «hello» en в файле Y.

Даже если это далеко от совершенства (действительно, довольно рваный), вместо мультиплексирования я решил настроить 4 входа:

1) Хвост -F A | grep hello

2) Хвост -F A | grep -v привет

3) хвост -F B | grep hello

4) хвост -F B | grep -v привет

и связать grep с каналом c_s, а grep -v - с каналом c_o

a1.sources  = r1_s r1_o r2_s r2_o
a1.sinks    = k_s k_o 
a1.channels = c_s c_o

a1.sources.r1_s.type     = exec
a1.sources.r1_s.command  = tail -F /home/cloudera/practicaingesta/server1.log | grep hello

a1.sources.r1_o.type     = exec
a1.sources.r1_o.command  = tail -F /home/cloudera/practicaingesta/server1.log | grep -v hello

a1.sources.r2_s.type     = exec
a1.sources.r2_s.command  = tail -F /home/cloudera/practicaingesta/server2.log | grep hello

a1.sources.r2_o.type     = exec
a1.sources.r2_o.command  = tail -F /home/cloudera/practicaingesta/server2.log | grep -v hello

a1.sinks.k_s.type              = file_roll
a1.sinks.k_s.sink.directory    = /home/cloudera/practicaingesta/flume_output_hello
a1.sinks.k_s.sink.rollInterval = 0 

a1.sinks.k_o.type              = file_roll
a1.sinks.k_o.sink.directory    = /home/cloudera/practicaingesta/flume_output_no_hello
a1.sinks.k_o.sink.rollInterval = 0 

a1.channels.c_s.type                = memory
a1.channels.c_s.capacity            = 1000
a1.channels.c_s.transactionCapacity = 100

a1.channels.c_o.type                = memory
a1.channels.c_o.capacity            = 1000
a1.channels.c_o.transactionCapacity = 100

a1.sources.r1_s.channels = c_s
a1.sources.r2_s.channels = c_s
a1.sources.r1_o.channels = c_o
a1.sources.r2_o.channels = c_o
a1.sinks.k_s.channel     = c_s
a1.sinks.k_o.channel     = c_o

Ожидаемый результат должен быть

X: содержит только строки с приветом

Y: содержит только строки без приветствия

Фактический результат: X и Y содержат целые файлы A, B. Что я делаю не так?

...