Скорость записи Spark Kafka в HDFS регулируется

#scala #apache-spark #apache-kafka #apache-spark-sql #kafka-consumer-api

Вопрос:

Я использую пакет spark (не потоковую передачу) для передачи данных из kafka в hdfs. Код довольно прост,

 val df = spark.read.format("kafka").
           option("kafka.bootstrap.servers","abc:9092").
           option("subscribe","xyz").
           option("startingOffsets","earliest")

df.write.format("avro").save("/hdfs/path")
 

Тема кафки «xyz» состоит из 12 разделов, и каждый раздел содержит 5-7 ГБ данных. Задание spark выполняется с 12 исполнителями, каждый из которых имеет 1 ядро и 3 ГБ оперативной памяти.

Что я замечаю, так это то, что, хотя исполнители в значительной степени выполняют одно и то же с аналогичными данными/объемом, время выполнения значительно отличается(самые быстрые исполнители в 2 раза быстрее, чем самые медленные исполнители). Предполагая, что есть некоторое регулирование чтения/записи.

Я уже пробовал увеличить следующие настройки без особого влияния,

    kafka.max.poll.records (=100000)
   kafka.max.partition.fetch.bytes (=1MB)
   kafka.fetch.max.bytes (=50MB)
 

Любые идеи / указатели, что может быть причиной дросселирования?