java - 如何使用 flume 将 body 中的数据拆分到不同的 channel 中?

标签 java hadoop flume

我想使用一个水槽代理,根据定义的函数拆分 body 数据,并将 body 数据的一部分发送到一个接收器,另一部分发送到另一个接收器。

我是否需要为此实现自定义拦截器,或者是否有我在阅读 Flume 用户指南时错过的默认解决方案?

最佳答案

是的,您必须编写自定义拦截器。

您可以使用 Interceptor 的拦截方法并根据您的功能拆分每个事件的主体。稍后您可以为主体的特定部分分配一个有意义的 header ,该 header 可用作水槽扇出流的重定向或 channel 选择器参数。

准备好代码后,您可以在 flume 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

关于java - 如何使用 flume 将 body 中的数据拆分到不同的 channel 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34749191/

相关文章:

java - 为什么使用框架创建模拟对象而不是创建对象本身

java - Hibernate 集合未在子移动时更新

hadoop - 配置单元中的 percentile_approx 返回零

api - 使用 Hadoop Flume 检索 google 分析数据

java - Flume1.6 spooldir 源仅摄取文件的一部分

hadoop - 如何有效地将数据从 Kafka 移动到 Impala 表?

java - 当我按下按钮时,如何将 stringbuilder 的结果打印到 jtext 区域

java - 为每个传入请求重置 servlet 类的实例变量

hadoop - 建议的表格数据 Hadoop 文件格式

hadoop - HIVE表是否在Hadoop集群的所有节点之间重复