如何在 Kafka 和 spark-sql 中管理流应用程序中的审计?

How to manage auditing in streaming application in Kafka and spark-sql?

在我们的项目中,我们正在考虑将 Kakfa 与 Spark Streaming 结合使用,对于 PoC,我使用的是 Spark 2.4.1 版本的 Kafka 和 Java8。

我有一些问题:

How to handle missing data into Kafka topics ingestion?

我不明白这个。是Kafka topic丢失数据还是Kafka topic到Spark streaming丢失数据?

第一个不能处理,除非你是数据的生产者,你可以根据原因改变。如果数据在 Kafka 集群上的保留期管理的 Kafka 主题中仍然可用,则第二个是可能的。

How to maintain the auditing for the same?

您可以做几件事。您可以要求 Kafka 通过提交这些偏移量来管理这些偏移量。或者您可以将偏移量写入任何其他位置,例如 HBase,然后您可以从那里获取已成功处理的消息偏移量。使用最新的 Structured Streaming,您无需管理这些底层细节,Spark 将在检查点目录中进行管理。

What should be the recovery mechanism to be followed?

这取决于您使用的是哪个选项。如果你在 HBase 中有偏移量,你可以从 HBase 读取并使用 KafkaUtils class 从给定的偏移量获取消息:

KafkaUtils.createDirectStream[String, String](
          ssc,
          LocationStrategies.PreferConsistent,
          ConsumerStrategies.Assign[String, String](fromOffsets.keys.toList, kafkaParams, fromOffsets)
        )

更多详情 https://spark.apache.org/docs/2.2.0/streaming-kafka-0-10-integration.html