Apache spark 将数据从Spark Streaming推送到Kafka
有人能给我提供示例代码,将Spark Streaming中的记录推送到Kafka吗?使用Spark Streaming,您可以使用Kafka topic中的数据 如果要将记录发布到Kafka主题,可以使用Kafka Producer[ 或者,您可以使用Kafka Connect,使用多个源连接器将数据发布到Kafka主题[ 有关Spark流媒体和Kafka集成的更多信息,请参见下面的链接Apache spark 将数据从Spark Streaming推送到Kafka,apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,有人能给我提供示例代码,将Spark Streaming中的记录推送到Kafka吗?使用Spark Streaming,您可以使用Kafka topic中的数据 如果要将记录发布到Kafka主题,可以使用Kafka Producer[ 或者,您可以使用Kafka Connect,使用多个源连接器将数据发布到Kafka主题[ 有关Spark流媒体和Kafka集成的更多信息,请参见下面的链接 我使用Java完成了它。您可以在JavaDStream上使用此函数作为.foreachRDD()的参数。这不
我使用Java完成了它。您可以在
JavaDStream
上使用此函数作为.foreachRDD()
的参数。这不是最好的方法,因为它会为每个RDD创建一个KafkaProducer
,您可以使用KafkaProducers
的“池”来完成这项工作,就像
这是我的密码:
public static class KafkaPublisher implements VoidFunction<JavaRDD<String>> {
private static final long serialVersionUID = 1L;
public void call(JavaRDD<String> rdd) throws Exception {
Properties props = new Properties();
props.put("bootstrap.servers", "loca192.168.0.155lhost:9092");
props.put("acks", "1");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1000);
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");
rdd.foreachPartition(new VoidFunction<Iterator<String>>() {
private static final long serialVersionUID = 1L;
public void call(Iterator<String> partitionOfRecords) throws Exception {
Producer<String, String> producer = new KafkaProducer<>(props);
while(partitionOfRecords.hasNext()) {
producer.send(new ProducerRecord<String, String>("topic", partitionOfRecords.next()));
}
producer.close();
}
});
}
}
public静态类KafkaPublisher实现VoidFunction{
私有静态最终长serialVersionUID=1L;
公共void调用(JavaRDD)引发异常{
Properties props=新属性();
props.put(“bootstrap.servers”,“loca192.168.0.155lhost:9092”);
道具放置(“阿克斯”,“1”);
道具放置(“重试”,0);
道具放置(“批量大小”,16384);
道具放置(“linger.ms”,1000);
props.put(“buffer.memory”,33554432);
put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
put(“value.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
foreachPartition(新的VoidFunction(){
私有静态最终长serialVersionUID=1L;
公共void调用(迭代器分区记录)引发异常{
制作人=新卡夫卡制作人(道具);
while(partitionOfRecords.hasNext()){
send(newproducerrecord(“topic”,partitionOfRecords.next());
}
producer.close();
}
});
}
}