kakfa中key的介绍

如果数据输入时指定了key,那么分区时可能会和key有关,并且key中的值就是给定的数据,一般是元数据,或者你需要的数据放在其中方便后续使用

如果没有指定分区和key,分区规则就是粘性分区,此时存储的key中是没有任何值的,即为空,也就没有任何作用,只是为固定的kv对做了搭配而已

虽然提供的引用中未提及使用 Flume 发送数据到 Kafka 时指定 key 的具体方法,但可结合 Flume 与 Kafka 的常规使用逻辑进行分析。 Flume 是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统,支持将数据写入各类数据接收方,包含 Kafka [^4]。把数据从 Flume 传递到 Kafka 时,可使用 Kafka Sink [^1]。 在 Flume 的配置里,能够借助拦截器给 Event 的 header 添加 key 值,进而指定数据发送到 Kafka 的分区。例如,添加 UUID 拦截器,它会给 Event 的 header 增添一个 key 值,Flume 在发送到 Kafka 时依据该 key 指定固定分区 [^2]。 示例配置如下: ```properties # 配置 agent agent.sources = source1 agent.sinks = sink1 agent.channels = channel1 # 配置 source agent.sources.source1.type = netcat agent.sources.source1.bind = localhost agent.sources.source1.port = 44444 # 配置 sink agent.sinks.sink1.type = org.apache.flume.sink.kafka.KafkaSink agent.sinks.sink1.kafka.bootstrap.servers = localhost:9092 agent.sinks.sink1.kafka.topic = test_topic # 指定 key 的方式 agent.sinks.sink1.kafka.producer.key.serializer = org.apache.kafka.common.serialization.StringSerializer agent.sinks.sink1.kafka.key = my_key # 配置 channel agent.channels.channel1.type = memory agent.channels.channel1.capacity = 1000 agent.channels.channel1.transactionCapacity = 100 # 绑定 source 和 sink 到 channel agent.sources.source1.channels = channel1 agent.sinks.sink1.channel = channel1 ``` 在这个配置示例中,`agent.sinks.sink1.kafka.key = my_key` 这一行指定了发送到 Kafka 的数据的 key 为 `my_key`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值