在Flume代理中,我收集了Kafka主题中的元素,我需要将它们插入ES中。但是我需要在接收器中执行先前的消化过程,因此我需要编写一个自定义接收器以将数据从代理的通道传递到java消化模块(我已经编写过)。
任何人都可以与我分享自定义接收器的模板并可以用作参考吗? Flumes官方网站对此主题并未说太多: 启动Flume代理时,自定义接收器的类及其依赖项必须包含在代理程序的类路径中。自定义接收器的类型是其FQCN。 https://flume.apache.org/FlumeUserGuide.html#custom-sink
一旦自定义接收器准备就绪,我如何链接以下三个文件以使代理工作:
感谢您的任何反馈。我将在完成此任务后立即添加信息。
答案 0 :(得分:1)
希望您尝试使用Flume从Kafka(源)接收事件并使用您已有的一些数据处理逻辑将其转发到ES(接收器)。
根据这种理解,我建议你研究一下Flume拦截器,它负责在发送到Sink之前改变/过滤事件。
因此,改变事件的所有业务逻辑都可以作为自定义拦截器实现,并且应该配置为Flume通道。
作为参考,您可以查看已有的native interceptors source code。这应该可以让你了解Flume拦截器框架。
示例Flume配置
a1.sources = kafkaSource
a1.sinks = ES_Sink
a1.channels = channel1
a1.sources.kafkaSource.interceptors = i1
a1.sources.kafkaSource.interceptors.i1.type = org.apache.flume.interceptor.<Custom_Interceptor_name>$Builder
a1.sinks.ES_Sink.channel = channel1
a1.sinks.ES_Sink.type = elasticsearch
a1.sinks.ES_Sink.hostNames = 127.0.0.1:9200