使用火花流将数据发布到kafka主题时重复

时间:2019-05-20 14:59:03

标签: apache-spark apache-kafka spark-streaming kafka-producer-api spark-streaming-kafka

我有一个sprak-streaming应用程序,该应用程序使用来自topic1的数据并进行解析,然后将相同的记录发布到2个进程中,一个进程进入topic2,另一个进程对表进行配置。将数据发布到kafka topic2时,在配置单元表中看到重复项,而没有看到重复项

使用 spark 2.2,Kafka 0.10.0

KafkaWriter.write(spark, storeSalesStreamingFinalDF, config)
writeToHIVE(spark, storeSalesStreamingFinalDF, config)


object KafkaWriter {

  def write(spark: SparkSession, df: DataFrame, config: Config)
  {
    df.select(to_json(struct("*")) as 'value)
      .write
      .format("kafka")
      .option("kafka.bootstrap.servers", config.getString("kafka.dev.bootstrap.servers"))
      .option("topic",config.getString("kafka.topic"))
      .option("kafka.compression.type",config.getString("kafka.compression.type"))
      .option("kafka.session.timeout.ms",config.getString("kafka.session.timeout.ms"))
      .option("kafka.request.timeout.ms",config.getString("kafka.request.timeout.ms"))
      .save()
  }
}

对此可以帮忙吗

预计kafka topic2中没有重复的内容。

1 个答案:

答案 0 :(得分:0)

要处理重复数据,我们应该设置.option("kafka.processing.guarantee","exactly_once"