Flume中从kafkasource分配数据到kafkaSink时,topic被覆盖问题

在使用Flume从KafkaSource传输数据到KafkaSink时,由于事件头(event headers)中的topic信息会覆盖Sink配置的topic,导致数据循环回源。解决方法包括:1) 设置KafkaSink的allowTopicOverride为false,防止header中的topic覆盖;2) 使用拦截器根据消息内容动态设定topic,避免死循环。配置文件和注意事项在文中详细说明。
摘要由CSDN通过智能技术生成

问题:

当kafkasource和kafkasink一起使用时, 传输到kafkasink的数据,被传到了kafkasource。
即陷入死循环,从 kafkasource 读取的数据被flume 重新传到kafkasource。

原因

当flume从kafka里读取的数据时,消息上会有个event headers结构。在events headers中会自动带上,topic:‘topic名称’。
如:
在这里插入图片描述
而kafka sink的 中 allowTopicOveride参数默认为true,即会使用event headers中的topic覆盖我们在kafka sink 配置的topic。

所以flume在输出的时候,会优先使用从event header中读取到的topic,其次才是读取 Sink端配置的topic。
导致flume在输出的时候kafka sink的topic被覆盖,数据被输出到kafka source的topic中了。

解决

方式1

如果kafka sink的topic是固定的,已知的。可以将allowTopicOverride参数设置为false,禁止header中的topic覆盖sink配置的topic值

sink 配置设置:

a1.sinks.kafkaSink.allowTopicOverride = false

配置文件完整代码

<
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flume使用Kafka作为Sink的步骤如下: 1. 安装Kafka:首先需要安装Kafka,可以从官网上下载最新版本:https://kafka.apache.org/downloads 2. 配置Kafka:配置Kafka的端口号、主题名称、副本数等参数。在config/server.properties文件进行配置。 3. 在Flume添加Kafka Sink:在Flume配置文件添加一个Kafka Sink,并配置它与Kafka的连接信息和主题等。 4. 启动KafkaFlume:启动KafkaFlume。 以下是一个示例Flume配置文件,使用Kafka作为Sink: ``` # Name the components on this agent agent.sources = source agent.sinks = kafkaSink agent.channels = memoryChannel # Describe/configure the source agent.sources.source.type = netcat agent.sources.source.bind = localhost agent.sources.source.port = 44444 # Describe the sink agent.sinks.kafkaSink.type = org.apache.flume.sink.kafka.KafkaSink agent.sinks.kafkaSink.brokerList = localhost:9092 agent.sinks.kafkaSink.topic = myTopic agent.sinks.kafkaSink.serializer.class = kafka.serializer.StringEncoder # Use a channel which buffers events in memory agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.capacity = 1000 # Bind the source and sink to the channel agent.sources.source.channels = memoryChannel agent.sinks.kafkaSink.channel = memoryChannel ``` 在这个配置,使用netcat作为源,监听本地的44444端口。在Kafka Sink,配置连接信息和主题名称等参数。同也使用了一个内存间件,用于缓存事件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值