Я просматривал структурированные потоковые документы с интервалом запуска: https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#triggers
Я использовал интервал триггера как 30 секунд при публикации данных в kafka
val query = dfToWriteInKafka.writeStream
.queryName("kafkaWriter")
.format("kafka")
.outputMode("append")
.trigger(Trigger.ProcessingTime(30000))
.option("kafka.bootstrap.servers", bootstrapServers)
.option("topic", topicName)
.option("checkpointLocation", config.getString("job.checkpoint"))
.start()
Я вижу, что для первых нескольких прогонов интервал между микропакетами не равен 30 секундам. При последующих запусках пакет запускается через 30 секунд.
Я хочу понять, как он решает, сколько записей выбрать в 1-й серии. Я знаю, что указал местоположение контрольной точки, но почему интервал запуска отличается для первых двух запусков.
Кроме того, как спарк решает, сколько записей выбрать в первом запуске?