如何在kafka主题中处理旧数据?

时间:2018-11-26 14:40:55

标签: apache-spark spark-structured-streaming

我开始使用Spark结构化流式传输。

我从kafka主题获取readStream(startOffset:最新) 用waterMark, 按事件时间与窗口持续时间进行分组 并写到kafka主题。

我的问题是 在Spark结构化流作业之前,如何处理写入kafka主题的数据?

我一开始尝试使用“ startOffset:最早”运行。但是kafka主题中的数据太大,因此由于纱线超时而无法启动火花流处理过程。 (即使我增加了超时值)

1。 如果我只是创建一个批处理作业并按特定数据范围进行过滤。 结果未反映在火花流的当前状态中, 结果的一致性和准确性似乎存在问题。

  1. 我试图重设检查点目录,但没有成功。

如何处理旧数据和大数据? 救救我。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Kafka + Structured Streaming的参数maxOffsetsPerTrigger来接收来自Kafka的旧数据。将此参数的值设置为您希望一次从Kafka接收的记录数。

使用:

sparkSession.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "localhost:9092")
      .option("subscribe", "test-name")
      .option("startingOffsets", "earliest")
      .option("maxOffsetsPerTrigger", 1)
      .option("group.id", "2")
      .option("auto.offset.reset", "earliest")
      .load()