#python #pyspark
#питон #пыспарк
Вопрос:
Я столкнулся с проблемой, не удалось загрузить PipelineModel
Я тестирую свою модель в практической среде, но не могу применить эту модель и код в производственной среде
Traceback (most recent call last): File "/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/predict/model_predict.py", line 228, in lt;modulegt; main(xdr_input_file,model_file,xdr_output_file) File "/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/predict/model_predict.py", line 215, in main xdr_df_predict = xdr_predict(xdr_df,model_file) File "/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/predict/model_predict.py", line 193, in xdr_predict loadmodel = PipelineModel.load(model_input_path) File "/usr/bch/1.5.0/spark/python/lib/pyspark.zip/pyspark/ml/util.py", line 257, in load File "/usr/bch/1.5.0/spark/python/lib/pyspark.zip/pyspark/ml/util.py", line 197, in load File "/usr/bch/1.5.0/spark/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py", line 1133, in __call__ File "/usr/bch/1.5.0/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 79, in deco pyspark.sql.utils.IllegalArgumentException: 'requirement failed: Error loading metadata: Expected class name org.apache.spark.ml.PipelineModel but found class name pyspark.ml.pipeline.PipelineModel' 21/12/01 12:01:06 INFO SparkContext: Invoking stop() from shutdown hook
Комментарии:
1. Пожалуйста, поделитесь также кодом, который выдает эту ошибку
2. Похоже, проблема связана с используемыми метаданными конвейера, как указано в исключении.
3. весь мой код большой, поэтому я просто делюсь той частью, которая вызывает эту проблему,
4. это версия spark вызывает эту проблему? я озвучил официальную документацию :в API конвейера была добавлена функция импорта/экспорта модели. Начиная с Spark 2.3, фрейм данных-
Ответ №1:
Спасибо всем за помощь.Я стажер в индустрии больших данных.Это мой первый раз,когда я публикую в stackoverflow, я сожалею, что публикую в незарегистрированном методе.
Finally,i sovled this problem to adjust my code from spark2.4 to spark2.2.
Вот подробная информация об этом отслеживании: Я тестирую свой код в тестовой среде под версиями spark2.4 и python3.7; я сталкиваюсь с ошибкой при развертывании его в среде продукта под версиями spark2.2 и python3.7.
Я обучаю модель в среде продукта, эта модель si генерирует ошибку:
Обратная трассировка (самый недавний призыв последнего): файл «/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/train/model_generate.py», строка 331, в Main(xdr_file_path,jingfeng_file_path,save_model_path) файл «/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/train/model_generate.py», строка 318, в основном tvs_piplineModel, gbdt_bestModel = generate_model(label_col, xdr_75109_String_title, union_df, save_model_path) файл «/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/train/model_generate.py», строка 310, в generate_model tvs_piplineModel.сохранить(save_model_path) файл «/usr/ВСН/1.5.0/spark/python/lib/pyspark.zip/pyspark/ml/pipeline.py», строка 217, в файле сохранения «/usr/bch/1.5.0/spark/python/lib/pyspark.zip/pyspark/ml/pipeline.py», строка 212, в файле записи «/usr/bch/1.5.0/spark/python/lib/pyspark.zip/pyspark/ml/util.py», строка 100, в файле инициализации «/usr/bch/1.5.0/spark/python/lib/pyspark.zip/pyspark/ml/pipeline.py», строка 249, в атрибуте _to_java ошибка: у объекта TrainValidationSplitModel нет атрибута _to_java
когда я пропускаю генерацию модели для прогнозирования модели в модели,которую я обучал в среде тестирования, это ошибка прогнозирования модели:
Обратная трассировка (самый недавний призыв последнего): файл «/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/predict/model_predict.py», строка 228, в главном(xdr_input_file,model_file,xdr_output_file) файл «/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/predict/model_predict.py», строка 215, в главном xdr_df_predict = xdr_predict(xdr_df,model_file) файл «/home/fwfx_yaofei/telbd-yjy/src/ml/complain_user_it/predict/model_predict.py», строка 193, в xdr_predict loadmodel = PipelineModel.нагрузка(model_input_path) файл «/usr/bch/1.5.0/spark/python/lib/pyspark.zip/pyspark/ml/util.py», строка 257, в нагрузку файл «/usr/ВСН/1.5.0/spark/python/lib/pyspark.zip/pyspark/ml/util.py», строка 197, в файле загрузки «/usr/bch/1.5.0/spark/python/lib/py4j-0.10.4-src.zip/py4j/java_gateway.py», строка 1133, в файле вызовов «/usr/bch/1.5.0/spark/python/lib/pyspark.zip/pyspark/sql/utils.py», строка 79, в файле deco pyspark.sql.utils.Исключение IllegalArgumentException: «Не выполнено требование: Ошибка загрузки метаданных: Ожидаемое имя класса org.apache.spark.ml.Модель конвейера, но найдено имя класса pyspark.ml.конвейер.Трубопроводная модель’
Я проверяю официальный документ, в котором объясняется сохраняемость ML:изменения версии сохраняемости ML, чтобы ошибка могла быть вызвана видением spark.
Я игнорирую функцию «TrainValidationSplitModel», о которой упоминается в первой обратной трассировке, и она работает.Мой код успешно запущен. Скриншот успешного запуска
Вывод: мой код нацелен на развертывание модели классификации машинного обучения в среде продукта. Поэтому я импортирую файл pyspark.ml.gbdt для обработки фрейма данных. Но я игнорирую видение среды тестирования и продукта.Спасибо за всю помощь,это опыт китайского стажера.Простите мою способность к самовыражению в бассейне.