我正在尝试在Flume中设置一个非常简单的工作流程来做到这一点:
JSON数据-> HTTPSource->内存通道->记录器
我正在尝试发布此数据:
[{“ string”:“这是一个测试帖子”}]
但这是我在记录器中得到的:
09/08/18 17:45:30信息接收器.LoggerSink:事件:{标头:{}正文:}
我可以说HTTPSource正在接收数据,因为如果发送无效的JSON消息,则会出现以下错误:
由以下原因引起:java.lang.IllegalStateException:预期为BEGIN_ARRAY但 在第1行第3列是BEGIN_OBJECT
这是我的水槽配置:
# 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
有人知道数据可能去往哪里吗?还是可能需要一些其他步骤来进行故障排除?
答案 0 :(得分:0)
这只是我没有阅读足够的文档。 JSONHandler所需的json格式为[{标头:{},正文:“”}],我的测试与此不符。
以下文档可帮助您:http://flume.apache.org/FlumeUserGuide.html#jsonhandler