Я обучил модель на python с использованием Наивного Байеса, но я не могу сохранить модель в любой форме. Я был реализован мой код на окнах. Хотя сохранение и загрузка модели описаны здесь https://spark.apache.org/docs/1.5.1/mllib-naive-bayes.html,, фактический метод сохранения не принимает параметр SparkContext, поэтому я работаю только с моим путем.
Некоторые люди предположили, что HADOOP_HOME может быть установлен неправильно, но я убедился, что версия winutils.exe правильная и ее местоположение находится в C: \ hadoop \ bin.
Я также изменил разрешение файла на полный доступ, хотя разрешения на запись уже были установлены по умолчанию.
Я попробовал обходной путь, как предлагается здесь https://machinelearningmastery.com/save-load-machine-learning-models-python-scikit-learn/,, но возникли другие исключения, связанные с pickle.load () и joblib, и я почувствовал, что меня бросили в червоточину, поэтому я отказался от этой альтернативы.
Я прочитал несколько предложений по сохранению весов модели, но я не понимаю, как работает такое решение.
Следующая строка возвращает фрейм данных со столбцами меток и объектов, а также контекст искры.
(train_output, train_spark) = at.Algorithm.preprocess_dataframe('train')
Ниже я тренирую свою модель, используя набор данных обучения и Наивный байесовский метод (сглаживание = 1) из pyspark.mllib.classification.
nbModel = at.execute_NB(train_output, 1)
А вот когда я пытаюсь сохранить свою модель
nbModel.write().overwrite().save('Interface/model')
#attempt with same output exception
Хотя каталог 'модель' появляется, исключение продолжает поступать, а именно:
nbModel.write (). перезаписать (). сохранить ( "Interface / модель")
Traceback (последний вызов был последним):
Файл "", строка 1, в
nbModel.write (). перезаписать (). сохранить ( "Interface / модель")
Файл "C: ... \ Anaconda3 \ lib \ site-packages \ pyspark \ ml \ util.py", строка 183, в сохранении
self._jwrite.save (путь)
Файл "C: ... i \ Anaconda3 \ lib \ site-packages \ py4j \ java_gateway.py", строка 1257, в , вызов
ответ, self.gateway_client, self.target_id, self.name)
Файл "C: ... \ Anaconda3 \ lib \ site-packages \ pyspark \ sql \ utils.py", строка 63, в деко
возврат f (* a, ** квт)
Файл "C: ... \ Anaconda3 \ lib \ site-packages \ py4j \ protocol.py", строка 328, в get_return_value
формат (target_id, ".", name), значение)
Py4JJavaError: Произошла ошибка при вызове o6242.save.
: org.apache.spark.SparkException: задание прервано.
,
,
,
Вызвано: org.apache.spark.SparkException: Задание прервано из-за сбоя этапа: Задача 0 на этапе 117.0 не выполнена 1 раз, последний сбой: Потерянная задача 0.0 на этапе 117.0 (TID 105, localhost, драйвер исполнителя): java.io .IOException: (нулевая) запись в командной строке: null chmod 0644
Я "..." редактировал некоторую информацию, потому что знал, что она не имеет отношения к проблеме.
Если кто-нибудь знает, как я могу сохранить модель в Python без использования уже опробованных решений, или, по крайней мере, дать мне еще одно предложение о том, как мне избавиться от этого исключения, я был бы всегда благодарен.