I defined a customized partitioner:

class ExpertSearchCollectionPartitioner implements Partitioner<Long> {

  @Override

  public int partition(Long key, int numPartitions) {

    System.out.print("    partition: " + key + ", " + numPartitions +
", "+ (key.hashCode() % numPartitions) +
"\n");

    return (int) (key % (long) numPartitions);

  }

};


and in the producer:

props.put("partitioner.class",  ExpertSearchCollectionPartitioner.class
.getName());

producer = new Producer<Long, String>(new ProducerConfig(props));

producer.send(new KeyedMessage<Long, String>(

              KAFKA_EXPERTSEARCHCOLLECTION_TOPIC,

              new Long(1),

              new String("I love kafka" + count)));


however, when I run the producer, I always got the following error:


Exception in thread "main" java.lang.NoSuchMethodException:
com.twitter.expertsearch.indexing.jit.ExpertSearchCollectionPartitioner.<init>(kafka.utils.VerifiableProperties)

at java.lang.Class.getConstructor0(Class.java:2721)

at java.lang.Class.getConstructor(Class.java:1674)

at kafka.utils.Utils$.createObject(Utils.scala:457)

at kafka.producer.Producer.<init>(Producer.scala:61)

at kafka.javaapi.producer.Producer.<init>(Producer.scala:25)

at
com.twitter.expertsearch.indexing.jit.ExpertSearchCollectionKafkaProducer.<init>(ExpertSearchCollectionKafkaProducer.java:70)

at
com.twitter.expertsearch.indexing.jit.ExpertSearchCollectionKafkaProducer.main(ExpertSearchCollectionKafkaProducer.java:91)

May I ask what I am missing? Is there anywhere an example java code to
customize the partitioner?

Thanks alot!
JAne

Reply via email to