我不明白logcompaction是如何工作的。
我已创建配置主题并使用此主题
kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic COMPACTION10
kafka-topics --alter --zookeeper localhost:2181 --config min.cleanable.dirty.ratio=0.01 --config cleanup.policy=compact --config segment.ms=100 --config delete.retention.ms=100 --config segment.bytes=1000 --topic COMPACTION10
后来,我创建了一个scala程序,用1到100插入(k,V)相同的K和V.
val data_amount = 100
val topic = "COMPACTION10"
val kafkaConfiguration = new Properties
kafkaConfiguration.put("bootstrap.servers", "localhost:9092")
kafkaConfiguration.put("key.serializer", Class.forName("org.apache.kafka.common.serialization.StringSerializer"))
kafkaConfiguration.put("value.serializer", Class.forName("org.apache.kafka.common.serialization.StringSerializer"))
val producer = new KafkaProducer[String, String](kafkaConfiguration)
for (id <- 1 to data_amount){
println( id )
val record = new ProducerRecord(topic, id.toString, id.toString)
producer.send(record)
}
producer.close()
执行此操作后,我得到了类似的内容:
1-1
2-2
3-3
4-4
5-5
6-6
7-7
8-8
9-9
10-10
11-11
12-12
13-13
14-14
15-15
16-16
17-17
18-18
19-19
20-20
21-21
22-22
23-23
24-24
25-25
26-26
27-27
57-57
58-58
59-59
60-60
61-61
62-62
63-63
64-64
65-65
66-66
67-67
68-68
Processed a total of 39 messages
为什么我只收到39封邮件,而不是100封邮件?所有他们都有不同的钥匙,因此,它不应该有压实。
如果我发送一个新的100个值(1到100),我会得到大约50条带有一些新值的消息。
后来,我尝试使用空值发送值来执行删除压缩,但是不能在生成器中发送None或null值。如果我发送“”值,它们会被识别为新值:
1-1
2-2
3-3
4-4
5-5
6-6
7-7
8-8
9-9
10-10
11-11
12-12
13-13
14-14
15-15
16-16
17-17
18-18
19-19
20-20
21-21
22-22
23-23
24-24
25-25
26-26
27-27
57-57
58-58
59-59
60-60
61-61
62-62
63-63
64-64
65-65
66-66
67-67
68-68
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12-
13-
14-
15-
16-
17-
18-
19-
20-
21-
22-
23-
24-
25-
26-
27-
28-
29-
30-
31-
32-
33-
34-
35-
36-
37-
Processed a total of 76 messages
如何发送空值以获取某些键的删除压缩?
我已经使用这些值执行了类似的结果:
我使用这些新参数执行了类似的结果。
kafka-topics --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic COMPACTION11
kafka-topics --alter --zookeeper localhost:2181 --config min.cleanable.dirty.ratio=0.01 --config cleanup.policy=compact --config segment.ms=1000 --config delete.retention.ms=10000 --config segment.bytes=1000 --topic COMPACTION11