【发布时间】:2016-01-12 16:44:06
【问题描述】:
我想使用一个flume代理,根据定义的函数拆分body的数据,将body数据的一部分发送到一个sink,另一部分发送到另一个sink。
我是否需要为此实现自定义拦截器,或者是否有我错过阅读 Flume 用户指南的默认解决方案?
【问题讨论】:
我想使用一个flume代理,根据定义的函数拆分body的数据,将body数据的一部分发送到一个sink,另一部分发送到另一个sink。
我是否需要为此实现自定义拦截器,或者是否有我错过阅读 Flume 用户指南的默认解决方案?
【问题讨论】:
是的,你必须编写一个自定义拦截器。
您可以使用 Interceptor 的拦截方法并根据您的功能拆分每个事件的主体。稍后您可以为主体的特定部分分配一个有意义的标头,该标头可用作水槽扇出流的重定向或通道选择器参数。
一旦你准备好你的代码,你可以在你的水槽conf 文件中添加以下属性并实现多路复用 -
多路选择器的映射:
Agent.sources.Source1.selector.type = multiplexing
Agent.sources.Source1.selector.header = someHeader
Agent.sources.Source1.selector.mapping.Value = Channel1
Agent.sources.Source1.selector.mapping.Value2 = Channel1 Channel2
Agent.sources.Source1.selector.mapping.Value3 = Channel2
【讨论】: