2016-08-23 5 views
0

Ich bin mit Cloudera Kafka Version 0.9.0 zur Verfügung gestellt, und ich habe einen eigenen ProducerJava Producer nicht erkennen Eigenschaft „Partitioner.class“ Eigenschaft

geschrieben Ich füge die folgenden Eigenschaften zu meinem ProducerConfig:

 Properties props = new Properties(); 
     props.put("bootstrap.servers", brokers); 
     props.put("acks", "all"); 
     //props.put("metadata.broker.list", this.getBrokers()); 
     //props.put("serializer.class", "kafka.serializer.StringEncoder"); 
     props.put("retries", 0); 
     props.put("batch.size", 16384); 
     props.put("linger.ms", 1); 
     props.put("buffer.memory", 33554432); 
     props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
     props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
     props.put("partitioner.class", "com.vikas.MyPartitioner"); 
Allerdings

wenn ich mein Programm laufen lasse, erhalte ich diesen Fehler

16/08/23 18:00:33 INFO producer.ProducerConfig: ProducerConfig values: 
     value.serializer = class org.apache.kafka.common.serialization.StringSerializer 
     key.serializer = class org.apache.kafka.common.serialization.StringSerializer 
     block.on.buffer.full = true 
     retry.backoff.ms = 100 
     buffer.memory = 33554432 
     batch.size = 16384 
     metrics.sample.window.ms = 30000 
     metadata.max.age.ms = 300000 
     receive.buffer.bytes = 32768 
     timeout.ms = 30000 
     max.in.flight.requests.per.connection = 5 
     bootstrap.servers = [server01:9092, server02:9092] 
     metric.reporters = [] 
     client.id = 
     compression.type = none 
     retries = 0 
     max.request.size = 1048576 
     send.buffer.bytes = 131072 
     acks = all 
     reconnect.backoff.ms = 10 
     linger.ms = 1 
     metrics.num.samples = 2 
     metadata.fetch.timeout.ms = 60000 

16/08/23 18:00:33 WARN producer.ProducerConfig: The configuration partitioner.class = null was supplied but isn't a known config. 

gemäß der Dokumentation auf http://kafka.apache.org/090/documentation.html#producerconfigs

Partitionierer, Klasse ist eine gültige Eigenschaft, aber ich bin mir nicht sicher, warum kafka sich darüber beschwert, dass es eine unbekannte Konfiguration ist.

+0

Probieren Sie es als Klasse Wert vorbei, nicht string: 'props.put (" Partitionierungs. Klasse ", MyPartitioner.class)' – serejja

+0

@serejja, Der Fehler sagt, es ist keine bekannte Konfiguration. –

+0

@serejja, habe ich versucht, die Änderung, die Sie vorgeschlagen, aber immer noch bekomme ich den gleichen Fehler –

Antwort

0

Werfen Sie einen Blick auf diesen Artikel http://www.javaworld.com/article/3066873/big-data/big-data-messaging-with-kafka-part-2.html es hat Beispiel für die Verwendung von benutzerdefinierten Partitionierer.

Wie Sie die Fehlermeldung

ist sehen

„16/08/23 18.00.33 WARN producer.ProducerConfig: Die Konfiguration partitioner.class = null geliefert wurde, ist aber keine bekannt Konfig.“ was bedeutet, Kafka nicht versteht den Schlüssel partitioner.class

Vielleicht möchten Sie Partitionierungs einstellen wie diese

 configProperties.put(ProducerConfig.PARTITIONER_CLASS_CONFIG,"com.vikas.MyPartitioner"); 
+0

Wie in der Dokumentation auf http://kafka.apache.org/090/documentation.html#producerconfigs Partitioner.class ist eine gültige Eigenschaft, aber ich bin nicht sicher, warum kafka beschweren sich über eine unbekannte Konfiguration ist. Ich werde die von Ihnen heute zur Verfügung gestellte Lösung testen. –

+0

Sorry @SunilPatil es funktioniert nicht :( –

+0

Versuchen Sie diesen Code Artikel http://www.javaworld.com/article/3066873/big-data/big-data-messaging-with-kafka-part-2.html. Es gibt einen Abschnitt zum benutzerdefinierten Partitionierer. Der Beispielcode ist in https://github.com/sdpatil/KafkaAPIClient/tree/master/src/main/java/com/spnotes/kafka/partition. Versuchen Sie com.spnotes.kafka.partition .Producer-Klasse verwendet benutzerdefinierten Partitionierer –