【发布时间】:2018-11-17 15:03:49
【问题描述】:
所以我在将 JSON 发送到多个主题和 不可靠的 kafka 代理时遇到了 Spark Streaming 中的 Kafka 接收器问题。以下是部分代码:
val kS = KafkaUtils.createDirectStream[String, TMapRecord]
(ssc,
PreferConsistent,
Subscribe[String, TMapRecord](topicsSetT, kafkaParamsInT))
然后我遍历 RDD 的
kSMapped.foreachRDD {
rdd: RDD[TMsg] => {
rdd.foreachPartition {
part => {
part.foreach { ...........
我在 foreach 里面做
kafkaSink.value.send(kafkaTopic, strJSON)
kafkaSinkMirror.value.send(kafkaTopicMirrorBroker, strJSON)
当镜像代理关闭时,整个流应用程序都在等待它,我们不会向主代理发送任何内容。
你会怎么处理?
对于您提出的最简单的解决方案,假设我只是跳过本应发送给发生故障的代理的消息(例如,情况 1)
对于 CASE 2,我们会做一些缓冲。
附:稍后我将使用 Kafka Mirror,但目前我没有这样的选项,所以我需要在我的代码中做一些解决方案。
【问题讨论】:
标签: scala apache-spark apache-kafka bigdata spark-streaming