Мы обновили aws emr до версии 5.20 с 5.16 (в которой используется spark 2.4 вместо 2.3.1).Мы заметили, что некоторые работы занимают больше времени.Похоже, это связано с проблемой уровня параллелизма на СДР.При запуске этого кода в aws emr:
JavaPairRDD<String, T> result =
keyBy(baseRDD.repartition(1000), keyGetter)
.mapValues(t -> function1(t));
Операция keyBy выполняет 1000 задач, но mapValues использует параллелизм кластера по умолчанию, тогда как в aws emr 5.16 тот же кодиспользует унаследованный параллелизм предыдущего RDD (1000).Количество разделов RDD, полученное в результате операции keyBy (getNumPartitions ()), действительно является уровнем параллелизма по умолчанию.
Мы не можем найти, изменилось ли это на spark или aws-emr или это какая-то ошибка, но это сильно влияет на производительность.