113 votes

Existe-t-il un moyen de supprimer toutes les données d'un sujet ou de supprimer le sujet avant chaque exécution ?

Existe-t-il un moyen de supprimer toutes les données d'un sujet ou de supprimer le sujet avant chaque exécution ?

Puis-je modifier le fichier KafkaConfig.scala pour changer l'adresse de l'utilisateur ? logRetentionHours la propriété ? Existe-t-il un moyen de supprimer les messages dès que le consommateur les lit ?

J'utilise des producteurs pour récupérer les données de quelque part et envoyer les données à un sujet particulier où un consommateur consomme, puis-je supprimer toutes les données de ce sujet à chaque exécution ? Je ne veux que des nouvelles données à chaque fois dans le sujet. Y a-t-il un moyen de réinitialiser le sujet d'une manière ou d'une autre ?

7voto

Dan M Points 612

Nous avons essayé à peu près tout ce que les autres réponses décrivent avec un succès modéré. Ce qui a vraiment fonctionné pour nous (Apache Kafka 0.8.1) est la commande de classe

sh kafka-run-class.sh kafka.admin.DeleteTopicCommand --topic yourtopic --zookeeper localhost:2181

5voto

Matheus Felipe Points 1246

Pour les utilisateurs de brasserie

Si vous utilisez brew comme moi et ont perdu beaucoup de temps à chercher l'infâme kafka-logs dossier, n'ayez plus peur. (et s'il vous plaît, faites-moi savoir si cela fonctionne pour vous et pour plusieurs versions différentes de Homebrew, Kafka etc :) )

Vous allez probablement le trouver en dessous :

Emplacement :

/usr/local/var/lib/kafka-logs


Comment trouver réellement ce chemin

(c'est aussi utile pour pratiquement toutes les applications que vous installez via brew)

1) brew services list

kafka a commencé matbhz /Users/matbhz/Library/LaunchAgents/homebrew.mxcl.kafka.plist

2) Ouvrez et lisez ce plist que vous avez trouvé ci-dessus

3) Trouver la ligne définissant server.properties le lieu l'ouvre, dans mon cas :

  • /usr/local/etc/kafka/server.properties

4) Recherchez le log.dirs ligne :

log.dirs=/usr/local/var/lib/kafka-logs

5) Allez à cet endroit et supprimez les journaux pour les sujets que vous souhaitez.

6) Redémarrez Kafka avec brew services restart kafka

3voto

Salvador Dali Points 11667

Toutes les données relatives aux sujets et à leurs partitions sont stockées dans la base de données de l'UE. tmp/kafka-logs/ . De plus, ils sont stockés dans un format topic-partionNumber donc si vous voulez supprimer un sujet newTopic vous pouvez :

  • arrêter kafka
  • supprimer les fichiers rm -rf /tmp/kafka-logs/newTopic-*

3voto

À partir de la version 2.3.0 de Kafka, il existe une autre méthode de suppression douce de Kafka (les anciennes méthodes sont dépréciées).

Mettez à jour la rétention.ms à 1 sec (1000ms) puis remettez-la après une minute, au réglage par défaut, c'est-à-dire 7 jours (168 heures, 604 800 000 en ms).

Suppression douce : - (rentention.ms=1000) (en utilisant kafka-configs.sh)

bin/kafka-configs.sh --zookeeper 192.168.1.10:2181 --alter --entity-name kafka_topic3p3r --entity-type topics  --add-config retention.ms=1000
Completed Updating config for entity: topic 'kafka_topic3p3r'.

Réglage par défaut:- 7 jours (168 heures , rétention.ms= 604800000)

bin/kafka-configs.sh --zookeeper 192.168.1.10:2181 --alter --entity-name kafka_topic3p3r --entity-type topics  --add-config retention.ms=604800000

1voto

earl Points 192
  1. Arrêter ZooKeeper et Kafka
  2. Dans server.properties, modifiez la valeur de log.retention.hours. Vous pouvez commenter log.retention.hours et ajouter log.retention.ms=1000 . Il ne conserverait l'enregistrement sur Kafka Topic que pendant une seconde.
  3. Démarrer zookeeper et kafka.
  4. Vérifiez la console du consommateur. Lorsque j'ai ouvert la console pour la première fois, l'enregistrement était là. Mais quand j'ai ouvert la console à nouveau, l'enregistrement a été supprimé.
  5. Plus tard, vous pourrez définir la valeur de log.retention.hours à la silhouette que vous souhaitez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X