FLUME KAFKA SOURCE 和 SINK 使用同一个 TOPIC
FLUME KAFKA SOURCE 和 SINK 使用同一个 TOPIC
最近做了一个事情,过滤下kakfa中的数据后,做这个就用到了flume
,直接使用flume source
和 flume sink
,中间再加一个过滤的intercetpor
就可以了。
要做的事情很简单,但是遇到了一个问题,就是sink
中指定的topic
不起作用。
过程是这样的:
KafkaSource.doProcess
方法会给event
的header
中添加一个topic
信息,里面保存了消费的topic
。
if (!headers.containsKey(KafkaSourceConstants.TOPIC_HEADER)) {
headers.put(KafkaSourceConstants.TOPIC_HEADER, message.topic());
}
KafkaSink.process
方法中会首先将event
的header
中的topic
信息作为sinkTopic
,如果header
中没有topic
信息,才会用sink定义的topic
。
eventTopic = headers.get(TOPIC_HEADER);
if (eventTopic == null) {
eventTopic = topic;
}
这就尴尬了,自定义的sinkTopic没用,解决办法:
- 在
KafkaSink.process
中去掉这几行代码,重新打包。 - 使用
intercetpor
具体参考这个。
posted on 2017-02-26 20:51 walkwalkwalk 阅读(1410) 评论(0) 编辑 收藏 举报