Je veux réinitialiser le décalage du groupe de consommateurs kafka par horodatage. Mais lorsque j'utilise la commande suivante:
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --reset-offsets --to-datetime 2017-11-1907:52:43:00:000 --group <group_name> --topic <topic_name> --execute
Je reçois le message d'erreur suivant:
Remarque: Cela n'affichera que des informations sur les consommateurs qui utilisent l'API consommateur Java (consommateurs non basés sur ZooKeeper).
comment réinitialiser le décalage en fonction du temps
Invoquer
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092
--group test-group --reset-offsets --all-topics --to-datetime 2017-08-04T00:00:00.000
peut réinitialiser les décalages aux plus anciens après l'heure donnée. Le format Datetime est yyyy-MM-ddTHH:mm:ss.xxx
, 2017-08-04T00: 00: 00.000 par exemple.
Vous pouvez également réinitialiser les décalages par durée. Voir un exemple ci-dessous:
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092
--group test-group --reset-offsets --all-topics --by-duration PT0H30M0S
--by-duration
réinitialise les décalages pour les compenser par la durée par rapport à l'horodatage actuel. Format: "PnDTnHnMnS".
Ce n'est pas une erreur, mais juste un avertissement - car vous avez spécifié --bootstrap-server
alors les modifications n'affecteront que les consommateurs implémentés à l'aide de la nouvelle API Java API. Si vous avez des consommateurs créés à l'aide d'autres API, vous devez spécifier --zookeeper
option à la place.
Ancien thread, mais ce lien est utile si vous voulez jouer avec les décalages kafka.
Surligner:
Kafka 0.11.0.0 (Confluent 3.3.0) a ajouté la prise en charge de la manipulation des décalages pour un groupe de consommateurs via cli
kafka-consumer-groups
commande.
Énumérez les sujets auxquels le groupe est abonné
bash kafka-consumer-groups --bootstrap-server <kafkahost:port> --group <group_id> --describe
Notez les valeurs sous "CURRENT-OFFSET" et "LOG-END-OFFSET". "CURRENT-OFFSET" est le décalage où se trouve actuellement ce groupe de consommateurs dans chacune des partitions.Réinitialiser le décalage client pour un sujet (aperçu)
bash kafka-consumer-groups --bootstrap-server <kafkahost:port> --group <group_id> --topic <topic_name> --reset-offsets --to-earliest
Ceci imprimera le résultat attendu de la réinitialisation, mais ne l'exécutera pas réellement.Réinitialiser le décalage du consommateur pour un sujet (exécuter)
bash kafka-consumer-groups --bootstrap-server <kafkahost:port> --group <group_id> --topic <topic_name> --reset-offsets --to-earliest --execute
Ceci exécutera la réinitialisation et réinitialisera le décalage du groupe de consommateurs pour le sujet spécifié à 0.Répétez 1 pour vérifier si la réinitialisation a réussi
Remarque
- Le groupe de consommateurs ne doit avoir aucune instance en cours d'exécution lors de la réinitialisation. Sinon, la réinitialisation sera rejetée.
Il existe de nombreuses autres options de réinitialisation, exécutez
kafka-consumer-groups
pour plus de détails
- --shift-by
- --à-courant
- --à la dernière
- --pour compenser
- - à date
- --par durée
La commande fournit également une option pour réinitialiser les décalages pour tous les sujets auxquels le groupe de consommateurs est abonné:
--all-topics