簡體   English   中英

Spark:將KafkaProducer廣播到Spark流媒體的最佳方法

[英]Spark : Best way to Broadcast KafkaProducer to Spark streaming

為了廣播KafkaProducer以激發執行者,我創建了一個如下的包裝器:

public class KafkaSink implements Serializable {
    private static KafkaProducer<String, String> producer = null;

    public KafkaProducer<String, String> getInstance(final Properties properties) {
        if(producer == null) {
            producer = new KafkaProducer<>(properties);
        }
        return producer;
    }

    public void close() {
        producer.close();
    }
}

並使用如下

 JavaSparkContext jsc = new JavaSparkContext(sc);
 Broadcast<KafkaSink> kafkaSinkBroadcast = jsc.broadcast(new KafkaSink()));
 dataset.toJavaRDD().foreach(row -> kafkaSinkBroadcast.getValue().getInstance(kafkaProducerProps()).send(new ProducerRecord<String, String>(topic, row.mkString(", "))))

我只是想知道它是正確的方法還是最好的方法是什么

我真的可以推薦此博客文章 簡而言之,您應該通過傳遞“配方”來創建Kafka生產者,為每個分區創建一個可序列化的接收器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM