У меня есть потоковое задание со структурой искры, которое читает из Kafka и записывает фрейм данных в Oracle внутри foreachBatch l oop. Мой код, как показано ниже. Я понимаю, что количество параллельных подключений будет зависеть от конфигурации numPartitions , но путается в том, как повторно используется соединение в исполнителе, задачах и микропакетах.
- Если соединение устанавливается один раз для всех исполнителей, затем оно останется открытым для будущих микропартий, или для каждой итерации будет установлено новое соединение.
Если соединение установлено для каждой задачи внутри исполнителя (например, 10 задач, затем 10 соединений), значит ли это, что каждый раз, когда для каждой итерации l oop и ее задачи будут устанавливаться новые соединения
StreamingDF.writeStream
.trigger(Trigger.ProcessingTime("30 seconds"))
.foreachBatch{
(microBatchDF: DataFrame, batchID) =>
{
microBatchDF.write
.format("jdbc")
.option("url", jdbcUrl)
.option("dbtable", "my_schema.my_table")
.option("user", username)
.option("password", password)
.option("batchsize", 10000)
.mode(SaveMode.Overwrite)
.save(
}
Что такое лучший способ повторно использовать одни и те же соединения для минимизации времени выполнения пакета?