如何在apache flume中写入不同的hbase表

时间:2015-03-23 13:46:08

标签: apache mongodb hbase flume

我已将Apache Flume配置为在JSON来源中接收消息(HTTP类型)。我的接收器是MongoDBHBase

如何根据指定字段将邮件写入不同的集合和表?

例如:我们假设我们有T_1T_2。现在有一条传入消息应该保存在T_1中。如何处理这些消息并将其分配到何处保存?

2 个答案:

答案 0 :(得分:0)

尝试使用Multiplexing Channel Selector。默认值(Replicating Channel Selector将源生成的Flume事件复制到其所有已配置的通道。但是,多路复用可以将事件放入特定通道,具体取决于Flume事件中标头的值。

为了根据应用程序逻辑创建这样的标头,您需要为HTTPSource创建自定义处理程序。这可以通过实现API的HttpSourceHandler接口轻松完成。

答案 1 :(得分:0)

您可以使用正则表达式标记消息类型+多路复用以将其发送到正确的目的地。 例如,基于消息“TEST”

字符串/字段的正则表达式

agent.sources.s1.interceptors.i1.type=regex_extractor
agent.sources.s1.interceptors.i1.regex=(TEST1)

将拦截器分配给序列化器SE1

agent.sources.s1.interceptors.i1.serializers=SE1
agent.sources.s1.intercetpros.i1.serializers.SE1.name=Test

发送到所需的频道,频道(c1,c2),您可以映射到不同的接收器

agent.sources.s1.selector.type=multiplexing
agent.sources.s1.selector.header=Test
agent.sources.s1.selector.mapping.Test=c1

测试正则表达式的所有事件将转到c1频道,其他事件将默认为C2

agent.sources.s1.selector.default=c2