Kafka在一个主题中写了许多信息

jv4diomz  于 2021-06-07  发布在  Kafka
关注(0)|答案(3)|浏览(254)

我需要Kafka主题中存储的消息数。这与是否有消费者消费了这些消息无关。

kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test-topic

上面给出了主题的偏移量?
以上是否等于Kafka主题中当前存储的消息数?

uxhixvfz

uxhixvfz1#

是的,如果earliest offset等于零,则此值等于消息数。如果earliest offset不等于零,则需要计算每个分区的差值,然后求和。

py49o6xq

py49o6xq2#

不完全是。您得到的数字仅指所有主题分区的当前最大偏移量。消息计数还取决于该主题的分区开始偏移量。
你可以跑 kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test-topic --time -1 以及 kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test-topic --time -2 分别计算每个分区的消息计数,方法是从endoffset中减去beginningoffset,然后将它们相加,得到该主题的总记录计数。

m2xkgtsf

m2xkgtsf3#

上面给出了主题的偏移量?是的,它给出了当前最大偏移量
以上是否等于Kafka主题中当前存储的消息数?不,这不是Kafka中的邮件数,因为在保留期之后,邮件将从主题中删除,所以偏移量!=邮件数
以获取Kafka中的消息数

brokers="<broker1:port>"
topic=<topic-name>
sum_1=$(/usr/hdp/current/kafka-broker/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list $brokers --topic $topic --time -1 | grep -e ':[[:digit:]]*:' | awk -F  ":" '{sum += $3} END {print sum}')
sum_2=$(/usr/hdp/current/kafka-broker/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list $brokers --topic $topic --time -2 | grep -e ':[[:digit:]]*:' | awk -F  ":" '{sum += $3} END {print sum}')
echo "Number of records in topic ${topic}: "$((sum_1 - sum_2))

其中option--time-1=>当前最大偏移量&--time-2是当前最小偏移量

相关问题