2016-08-07 18 views
0

Ich bin neu in Logstash.logstash Ausgabe nach kafka - Partitionschlüssel setzen

Ich versuche, json Daten aus Dateien zu lesen, und es an kafka zu senden. Der JSON, den ich lese, enthält Schlüssel für das Thema, die Partition und die eigentliche Nachricht.

Ich kann nicht finden, wie man den Partitionsschlüssel einstellt. bitte

input { 
    file { 
     path => "/data/files/*.*" 
     start_position => "beginning" 
     codec => "json" 
    } 
} 
filter { 
    json { 
     source => message 
    } 
} 
output { 
    kafka { 
     bootstrap_servers => "localhost:9092" 
     topic_id => "%{topic}" 
     message_key => "%{dataAsString}" 
    } 
} 

Hilfe ...

Grüße, ido

Antwort

0

AFAIK, können Sie nicht die Partitionsnummer von Logstash eingestellt. Alles, was Sie haben, ist der Schlüssel message_key, den der logstash kafka producer verwendet, um die Partition auszuwählen. Bitte überprüfen Sie die folgende Kafka DefaultPartitioner.scala.

Wie Sie sehen können, wenn Sie den Schlüssel nicht geben, wird eine zufällige Partition ausgewählt. Wenn Sie einen Schlüssel angeben, wird der Schlüssel mit einem Hashwert versehen, um zwischen den verfügbaren Partitionen zu wählen.

Um zu erreichen, was Sie gefragt haben, müssen Sie eine Klasse wie diese schreiben, logstash Plugin ändern, um Sie diese Klasse angeben zu lassen und in diesem Plugin die Partitionsnummer auswählen.

Apache Flume können Sie die Standard-Partitionierungsklasse festlegen, aber ich kann eine ähnliche Attraktivität in logstash Kafka-Ausgabe-Plugin nicht sehen.