Hello,

In your case the key's type is String, not byte array, so you need to
override the following property:

key.serializer.class -> "kafka.serializer.StringEncoder"

Details of the producer configs can be found:

http://kafka.apache.org/documentation.html#producerconfigs


On Wed, Jan 22, 2014 at 4:51 PM, Cassa L <lcas...@gmail.com> wrote:

> Hi all,
>   I am a new user of Kafka. I tried Java example of it and it worked great.
> Now when I tried to write to  a Producer (Java) and send ByteArray to it as
> a data, I get ClassCastException as below
>
> java.lang.ClassCastException: java.lang.String cannot be cast to [B
>     at kafka.serializer.DefaultEncoder.toBytes(Encoder.scala:34)
>     at
>
> kafka.producer.async.DefaultEventHandler$$anonfun$serialize$1.apply(DefaultEventHandler.scala:128)
>     at
>
> kafka.producer.async.DefaultEventHandler$$anonfun$serialize$1.apply(DefaultEventHandler.scala:125)
>     at
>
> scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
>     at
>
> scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:233)
>     at
>
> scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:34)
>     at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:33)
>     at
> scala.collection.TraversableLike$class.map(TraversableLike.scala:233)
>     at scala.collection.mutable.WrappedArray.map(WrappedArray.scala:33)
>     at
>
> kafka.producer.async.DefaultEventHandler.serialize(DefaultEventHandler.scala:125)
>     at
>
> kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:52)
>     at kafka.producer.Producer.send(Producer.scala:76)
>     at kafka.javaapi.producer.Producer.send(Producer.scala:33)
>
> =====================
> I am setting up Kafka properties as below -
>
>         props.put("serializer.class", "kafka.serializer.DefaultEncoder");
>         props.put("partitioner.class",
> "kafka.producer.DefaultPartitioner");
>
> =====================
> And I am sending data to producer as mentioned below -
>         KeyedMessage<String,byte[]> data = new KeyedMessage<String, byte[]>
> ("Topic", key, bytearray  );
>         producer.send(data);
>
> Can someone help me understand where actually this ClassCast problem is
> occurring?
>
> ..lCassa
>



-- 
-- Guozhang

Reply via email to