如何在Flume中转换事件并将其发送到另一个频道?

时间:2014-01-31 13:17:40

标签: java flume

Flume有一些现成的组件来转换事件,然后再推动它们 - 与RegexHbaseEventSerializer一样,您可以加入HBaseSink。此外,提供自定义序列化程序很容易。

我想处理事件并将它们发送到下一个频道。最接近我想要的是Regex Extractor Interceptor,它接受​​regexp匹配的自定义序列化程序。但它不会替换事件体,只需将带有结果的新标题附加到事件中,从而使输出流更重。我想接受大型活动,比如zipped html> 5KB,解析它们并将许多超薄信息(如页面中的网址)放到另一个频道。

                  channel1                channel2
HtmlPagesSource -----------> PageParser -----------> WhateverSinkGoesNext
                    html                    urls

我是否必须为此编写自定义接收器,或者是否有某些类型的组件接受自定义序列化器,例如HBaseSink

如果我写一个接收器,我是否只使用Flume客户端SDK并在处理传入事件时调用append(Event)或appendBatch(List)?

1 个答案:

答案 0 :(得分:3)

好像你需要运行两个Flume代理:

Agent1:HtmlPagesSource - >频道 - > PageParser(扩展AvroSink并覆盖可以解析输入并编写许多超薄消息的进程方法)

Agent2:AvroSource - >频道 - > WhateverSinkGoesNext

查看链接Flume数据流的一些示例: http://www.ibm.com/developerworks/library/bd-flumews/#N10081