Модель MLlib (RandomForestModel) сохраняет модель с многочисленными небольшими файлами паркета
Я пытаюсь обучить модель MLlib RandomForestRegression с помощью API RandomForest.trainRegressor.
После тренировки, когда я пытаюсь сохранить модель, полученная папка модели имеет размер 6,5 МБ на диске, но в папке данных есть 1120 небольших файлов паркета, которые кажутся ненужными и медленно загружаются / загружаются в s3.
Это ожидаемое поведение? Я конечно перераспределяю помеченные точки, чтобы иметь 1 раздел, но это происходит независимо.
1 ответ
Перераспределение с rdd.repartition(1)
перед тренировкой не сильно помогает. Это делает обучение потенциально более медленным, потому что все параллельные операции эффективно последовательны, так как весь процесс параллелизма основан на разделах.
Вместо этого я придумал простой взлом и установил spark.default.parallelism
в 1
в качестве процедуры сохранения используйте sc.parallelize
метод для создания потока для сохранения.
Имейте в виду, что это повлияет на бесчисленные места в вашем приложении, как groupBy
а также join
, Мое предложение состоит в том, чтобы извлечь обучающую и сохраненную модель в отдельное приложение и запустить его отдельно.