2017-06-20 8 views
2

Soweit ich nach dem Lesen der Kafka Streams-Dokumentation verstehe, ist es nicht möglich, Daten von nur einer Partition zu einem gegebenen Thema zu streamen, man muss es immer komplett lesen.Streamen von einer bestimmten Partition innerhalb eines Themas (Kafka Streams)

Ist das korrekt?

Wenn ja, gibt es Pläne, der API in Zukunft eine solche Option bereitzustellen?

+0

Die Frage ist mir nicht so klar. Die Quelle Ihrer Streaming-Anwendung kann ein Thema mit nur einer Partition sein. Aber es ist möglich, dass ich die Frage nicht verstanden habe ... kannst du das bitte erläutern? – ppatierno

+0

Ich werde ein Beispiel geben. Nehmen wir an, dass ich Thema "A" mit 10 Partitionen habe und ich Daten aus diesem Thema streamen möchte, aber nur von Partition 4, ohne Daten von anderen Partitionen zu sammeln. – Purple

+0

Dann müssen Sie nur die Daten in Partition 4 in ein anderes Thema mit nur 1 Partition kopieren und diese als Eingabe für Streams verwenden. –

Antwort

2

Nein, Sie können das nicht tun, weil der interne Verbraucher das Thema abonniert, das einer Verbrauchergruppe beitritt, die durch die Anwendungs-ID angegeben wird, so dass die Partitionen automatisch zugewiesen werden. BTW warum willst du das tun? Ohne Neuabgleich verlieren Sie die Skalierbarkeit von Kafka Stream, da Sie nur Instanzen Ihrer Streaming-Anwendung hinzufügen/entfernen können. Dank des Re-Balancing auf Partitionen können Sie den gesamten Prozess skalieren.

+1

Ich hätte gerne eine solche Funktion, weil ich in einigen Fällen genau weiß, in welcher Partition die Daten das Interesse haben. Das Streamen nur von dieser bestimmten Partition sollte zu einer besseren Leistung führen, da weniger Daten herausgefiltert werden müssen. Aber danke für die Aufklärung! – Purple

2

Mit PartitionGrouper können Sie etwas Ähnliches tun. Ein Partition-Grouper kann verwendet werden, um eine Stream-Aufgabe basierend auf der gegebenen Themenpartition zu erstellen.

Siehe zum Beispiel die DefaultPartitionGrouper-Implementierung. Aber es würde Anpassung erfordern.

Deshalb sollten Sie, wie @ppatierno vorgeschlagen hat, in Ihren Anwendungsfall schauen und die Topologie so entwerfen, dass Sie nicht von einer Standardpraxis abweichen müssen.

Verwandte Themen