Я из команды EMR, поэтому я немного предвзят в отношении этой функции, хотя есть некоторые свидетельства того, что она хорошо работает для других клиентов. См. Например, https://stackoverflow.com/a/54350777/2205987.
Однако я сначала отвечу на вопрос, который вы задали. Чтобы использовать собственный класс коммиттера, вам нужно установить свойство spark.sql.parquet.output.committer.class
. В приведенном выше примере вы неправильно используете spark.hadoop.spark.sql.parquet.output.committer.class
.
Тем не менее, я думаю, что мы должны сначала подтвердить, что ваше приложение вообще использует оптимизатор EMRFS S3 в первую очередь. Если вы испытываете медлительность в конце задания, возможно, что оптимизированный коммиттер на самом деле не используется или что есть другая причина замедления в вашей работе, такая как перекос данных, вызывающий очень долгое выполнение задачи.
В некоторых случаях оптимизатор EMRFS S3 не будет фактически использоваться, даже если он включен. Это поможет узнать немного больше информации о вашем приложении, например пример кода. Кроме того, если вы сможете предоставить пример идентификатора кластера (j-ABC123), это поможет кому-нибудь из EMR отладить вашу проблему.