我已尝试使用以下最新maven工件的Java代码。 https://mvnrepository.com/artifact/com.github.benfradet/spark-kafka-writer_2.10/0.4.0 和前一个一样 - https://mvnrepository.com/artifact/com.github.benfradet/spark-kafka-writer_2.10/0.1.0 但是下面的代码并不允许我使用Java 1.8和Eclipse Oxygen最新的IDE进行编译。
import com.github.benfradet.spark.kafka.writer.DStreamKafkaWriter;
import com.github.benfradet.spark.kafka.writer.KafkaWriter;
import org.apache.kafka.common.serialization.StringSerializer;
import scala.Function1;
import scala.Option;
import scala.Serializable;
Map<String, Object> producerConfig = new HashMap<String, Object>();
producerConfig.put("bootstrap.servers", "localhost:9092");
producerConfig.put("key.serializer", StringSerializer.class);
producerConfig.put("value.serializer", StringSerializer.class);
KafkaWriter<String> kafkaWriter = new DStreamKafkaWriter<>(lines.dstream(), scala.reflect.ClassTag$.MODULE$.apply(String.class));
Function1<String, ProducerRecord<String, String>> f = new MyFunc<String, ProducerRecord<String, String>>() {
@Override
public ProducerRecord<String, String> apply(final String s) {
return new ProducerRecord<>("my-topic", s);
}
};
kafkaWriter.writeToKafka(producerConfig, f,Option.empty());
KafkaWriter.writerToKafka(producerConfig,f,Option.empty)--- Line在Eclipse IDE上给出了以下错误
任何帮助表示赞赏。
答案 0 :(得分:0)
kafka作家的writeToKafka
method在此次尝试中需要scala.collection.Map
,我们正在使用java.util.Map
official Java example使用asScala
转换,但我不知道它来自哪里。 (它似乎不合法,因为它看起来像是使用来自scala.collection.JavaConverters
的Scala隐式转换,但这在Java中不起作用)
最简单的解决方案是实例化scala.collection.immutable.HashMap
,但我建议迁移作业以使用Scala。
如果您使用Spark&gt; = v2.2,写入kafka的最简单方法是将您的数据转换为Dataset
或DataFrame
并使用DataFrameWriter
这样的:
data.write.format("kafka")
.option("kafka.bootstrap.servers","...")
.option("topic", "abcTopic" )
.option("checkpointLocation", "/path/to/checkpoint/loc")
.save()
(AFAIK,我找不到任何地方都没记录。)