Я пытаюсь настроить очень простой рабочий процесс в Flume, который делает это:
Данные JSON -> HTTPSource -> Канал памяти -> Регистратор
Я пытаюсь отправить эти данные:
[ { "строка" : "это тестовый пост" }]
Но вот что я получаю в регистраторе:
18/08/09 17:45:30 INFO приемник.LoggerSink: Событие: { заголовки: {} тело: }
Я могу сказать, что HTTPSource получает данные, потому что, если я отправляю недопустимое сообщение JSON, я получаю следующую ошибку:
Вызвано: java.lang.IllegalStateException: ожидалось BEGIN_ARRAY, но было BEGIN_OBJECT в строке 1, столбце 3
Вот моя конфигурация флейма:
# Agent ============================================================================
booking.sources = httpsource
booking.channels = channel
booking.sinks = hdfssink
# Source ============================================================================
booking.sources.httpsource.type = org.apache.flume.source.http.HTTPSource
booking.sources.httpsource.port = 8090
booking.sources.httpsource.bind = localhost
# Channel ============================================================================
booking.channels.channel.type = memory
booking.channels.channel.capacity = 50000
booking.channels.channel.transactionCapacity = 5000
booking.sources.httpsource.channels = channel
booking.sinks.hdfssink.channel = channel
# Sink ============================================================================
booking.sinks.hdfssink.type = logger
Я запускаю его с помощью следующей команды:
flume-ng agent --conf conf --conf-file conf/test.conf --name booking -Dflume.root.logger=DEBUG,console
А вот команда, которую я использую для публикации данных JSON:
curl --verbose --header "Content-Type: application/json" -k -d "@test.txt" -X POST http://localhost:8091
Кто-нибудь знает, куда могут идти данные? Или, может быть, какие-то дополнительные шаги для устранения неполадок?