2017-01-06 1 views
0

Comment faire pour pousser les données correspondantes entre le sujet 1 et le sujet 2 dans un autre sujet 3? lors de l'envoi de messages du producteur au consommateur?Comment envoyer des données de correspondance kafka à un autre sujet

+0

Kafka ne fournit pas une telle fonctionnalité. Vous devez implémenter votre propre consommateur \ producer qui lira les deux sujets, fera correspondre les messages et les transférera au 3ème sujet. –

+0

Merci pour la réponse. Une question plus seulement à travers les API Consumer and Producer à Kafka? Nous ne pouvons pas utiliser de tempête/étincelle/flink –

+0

pouvons-nous utiliser Spark/Flink/Storm pour faire ce message de correspondance et de pousser à Topic3? –

Répondre

1

Je n'ai pas travaillé avec Spark mais je peux vous donner une forme de direction Apache tempête perspective Apache Storm

  1. Construire une topologie avec 2 kafka becs verseurs consommant chacun de sujet1 et topic2

  2. Consommez ces données dans un boulon et un comp sont les données. Vous pouvez utiliser un seul boulon ou une série de boulons successifs. Vous devrez peut-être utiliser un peu de persistance. mongodb ou quelque chose comme redis ou memcache, selon vous logique de comparaison

  3. Poussez les données communes aux nouveaux kafka sujetSend data to kafka from Storm using kafka bolt

Ceci est très Apache Storm solution spécifique, ne peut pas être le plus idéal ou approprié ou efficace un, mais visant à donner une idée générale

Voici un lien vers les concepts de base dans la tempête Storm Concepts

0

Je travaille avec Spark depuis maintenant plus de six mois, et oui c'est tout à fait possible. Pour être honnête, assez simple. Mais mettre des étincelles est un peu exagéré pour ce problème. Qu'en est-il des ruisseaux Kafka? Je n'ai jamais travaillé avec eux, mais cela ne devrait-il pas résoudre exactement ce problème? Si vous voulez utiliser l'étincelle: Utilisez l'intégration Spark Kafka (j'ai utilisé spark-streaming-kafka-0-10) pour consommer et pour produire les données, soit très simplement. Que de chercher le streaming Spark Api dans la documentation.

Une simple jointure sur les 2 flux DS devrait résoudre le problème. Si vous voulez stocker des données qui ne correspondent pas, vous pouvez le fenêtre ou utiliser la fonction UpdateStateByKey. J'espère que ça aide quelqu'un. Bonne chance :)