Проблемы производительности Spark Streaming, несмотря на кеширование ввода df - PullRequest
1 голос
/ 17 апреля 2020

Я использую подход Spark Dstream. У меня есть входной RDD, который я кеширую, как только читаю.

val cachedDf = rdd
             .repartition(200)
             .persist(StorageLevel.MEMORY_AND_DISK).toDF()

Я также вижу, что входной rdd кэшируется на вкладке storage пользовательского интерфейса моего приложения spark. Моя кафка топи c имеет 15 partitions.

Однако, когда после каждого действия в кэшированном фрейме данных я вижу 15 задач, выполняющихся в моем приложении несколько раз (не только после первого действия, после каждого действия), что снижает скорость моего приложения в более длительном запустить.

Эти задачи выполняются в течение 2-3 минут и увеличиваются по мере увеличения числа обрабатываемых сообщений в пакете.

Что я не могу понять, так это то, что я перераспределяю свой фрейм данных и немедленно сохраняю его Какие 15 задач выполняются?

Каждая другая основная задача имеет 200 подзадач, что читается в этих 15 подзадачах?

Мое приложение снова читает из kafka?

...