[ https://issues.apache.org/jira/browse/BEAM-2704?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16338195#comment-16338195 ]
Raghu Angadi commented on BEAM-2704: ------------------------------------ Resolving this as BEAM-2257 is fixed (it still needs to be marked resolved). > KafkaIO: NPE without key serializer set > --------------------------------------- > > Key: BEAM-2704 > URL: https://issues.apache.org/jira/browse/BEAM-2704 > Project: Beam > Issue Type: Bug > Components: sdk-java-extensions > Reporter: Chris Pettitt > Assignee: Raghu Angadi > Priority: Major > > The KafkaIO javadoc implies that you do not need to set a Serializer if you > only want to emit values: > {code} > * <p>Often you might want to write just values without any keys to Kafka. > Use {@code values()} to > * write records with default empty(null) key: > * > * <pre>{@code > * PCollection<String> strings = ...; > * strings.apply(KafkaIO.<Void, String>write() > * .withBootstrapServers("broker_1:9092,broker_2:9092") > * .withTopic("results") > * .withValueSerializer(new StringSerializer()) // just need serializer > for value > * .values() > * ); > * }</pre> > {code} > However, if you don't set the key serializer then Kafka blows up when trying > to instantiate the key serializer (in Kafka 0.10.1, at least). It would be > more convenient if KafkaIO worked as documented and assigned a null > serializer if values() is used. > Relevant stack trace: > {code} > Caused by: java.lang.NullPointerException > at > org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:230) > at > org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:163) > at > org.apache.beam.sdk.io.kafka.KafkaIO$KafkaWriter.setup(KafkaIO.java:1582) > at > org.apache.beam.sdk.io.kafka.KafkaIO$KafkaWriter$DoFnInvoker.invokeSetup(Unknown > Source) > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)