独立群集中的Spark Streaming多次采用相同的Kafka消息

时间:2018-06-03 08:11:06

标签: apache-spark apache-kafka spark-streaming dstream

当我在本地使用它时,我的火花串流应用程序只需要一次记录,但是,当我在独立群集上部署它时,它会从Kafka读取相同消息的两倍。 另外,我已经仔细检查过这不是与kafka制作人有关的问题。

这是我创建流的方式:

val stream = KafkaUtils.createDirectStream[String, String](ssc, PreferConsistent,
                             Subscribe[String, String]("aTopic", kafkaParams))

这是kafkaParams配置:

"bootstrap.servers" -> KAFKA_SERVER,
"key.deserializer" -> classOf[StringDeserializer],
"value.deserializer" -> classOf[StringDeserializer],
"group.id" -> "test-group",
"auto.offset.reset" -> "latest",
"enable.auto.commit" -> (false: java.lang.Boolean)

群集有2个从属服务器,每个服务器有一个工作服务器,看起来每个工作服务器都接收相同的消息。 有人可以帮帮我吗?

修改

例如,当我从卡夫卡发送一个点时。从这段代码:

    stream.foreachRDD((rdd, time) => {
          if (!rdd.isEmpty) {
            log.info("Taken "+rdd.count()+ " points")
        }
    }

我获得"Taken 2 points"。如果我打印它们,它们是平等的。我做错了吗?

我正在使用

  • " org.apache.spark" %%" spark-streaming-kafka-0-10" %" 2.2.0"
  • spark 2.2.0
  • kafka_2.11-0.11.0.1

0 个答案:

没有答案