Хакеры 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.
Что я делаю не так?