Мы запускаем Spark в автономном режиме с 3 узлами на «большом» блоке EC2 объемом 240 ГБ, чтобы объединить три CSV-файла, считанные в DataFrames, в JavaRDD в выходные файлы CSV-частей на S3 с использованием s3a.
Из пользовательского интерфейса Spark мы можем видеть, что первые этапы чтения и слияния для создания окончательного JavaRDD работают на 100% ЦП, как и ожидалось, но последний этап записи в виде файлов CSV с использованием saveAsTextFile at package.scala:179
«зависает» на много часов на 2 из 3 узлы с 2 из 32 задач, занимающих часы (коробка на 6% ЦП, память 86%, сетевой ввод-вывод 15 кбит/с, дисковый ввод-вывод 0 за весь период).
Мы читаем и записываем несжатый CSV (мы обнаружили, что несжатый файл был намного быстрее, чем сжатый gzip) с повторным разделом 16 на каждом из трех входных фреймов данных и без повторной записи.
Будем признательны за любые подсказки, что мы можем исследовать, чтобы узнать, почему заключительный этап занимает так много часов, делая очень мало на 2 из 3 узлов в нашем автономном локальном кластере.
Большое спасибо
--- ОБНОВИТЬ ---
Пробовал писать на локальный диск, а не на s3a, симптомы те же - 2 из 32 задач на финальном этапе saveAsTextFile
"зависают" на несколько часов: