Я новичок в PySpark, много занимался самообучением и работаю в PySpark. Мое требование и проблема:
После обработки моего входного RDD, мы добавляем некоторые значения (столбцы) в конец RDD и создаем новый выходной RDD. Программа может добавить 1 или более чем 1 значение (столбцы) в конце СДР. Теперь нам нужно извлечь эти новые значения (столбцы) из RDD и записать их в файл HDFS.
Новые добавленные столбцы всегда начинаются со слова «ОБРАБОТАНО» и заканчиваются «]»
Пожалуйста, дайте знать, как решить эту проблему.
Примечание. Перед этим мы не будем знать, сколько столбцов содержится во входном файле и сколько новых столбцов добавляется.
Мой подход:
1. Я создал String DF из выходных данных RDD.
2. Использование функции toLocalIterator для обхода DF.
3. Найдите положение слов «ОБРАБОТАНО» и «]» и извлеките строку
4. Создайте новый фрейм данных с этой извлеченной строкой и запишите его в файл.
Проблема здесь в том, что искровой параллелизм не используется, он использует только одну карту. Для небольшого количества данных это работает правильно. Для больших данных это занимает много времени, и у нас возникают проблемы с сборкой мусора и памятью.
есть ли лучший способ сделать это?
В настоящее время мы не передаем параметры для сборки мусора на лету, поэтому, если кто-то может предоставить некоторую информацию, какие параметры использовать для лучшей сборки мусора.
используются параметры отправки по запросу: память драйвера = 20 ГБ, память исполнителя = 20 ГБ, ядра драйвера = 4, ядра исполнителя = 4, экземпляры исполнителя = 29
Спасибо.