#pyspark #jar #pmml
Вопрос:
У меня есть ноутбук PySpark, работающий в AWS EMR. В моем конкретном случае я хочу использовать pyspark2pmml
pmml
для создания модели, которую я только что обучил. Однако я получаю следующую ошибку (при запуске pyspark2pmml.PMMLBuilder
, но я не думаю, что это имеет значение).
JPMML-SparkML not found on classpath
Traceback (most recent call last):
File "/tmp/1623111492721-0/lib/python3.7/site-packages/pyspark2pmml/__init__.py", line 14, in __init__
raise RuntimeError("JPMML-SparkML not found on classpath")
RuntimeError: JPMML-SparkML not found on classpath
Я знаю, что это вызвано тем, что мой сеанс Spark не имеет ссылки на необходимый класс. Чего я не знаю, так это как начать сеанс Spark с этим доступным классом. Я нашел еще один ответ , используя %%conf -f
, но это изменило другие настройки, которые, в свою очередь, удерживали меня от использования sc.install_pypi_package
, в котором я также нуждался.
Есть ли способ, которым я мог бы запустить сеанс Spark с помощью этого доступного класса JPMML, но без изменения каких-либо других настроек?
Ответ №1:
Итак, вот ответ, но не тот, который мне нужен.
Чтобы добавить этот класс в путь к классам, я могу начать свою работу с этого:
%%configure -f
{
"jars": [
"{some_path_to_s3}/jpmml-sparkml-executable-1.5.13.jar"
]
}
Это создает проблему, на которую я ссылался выше, когда у меня нет такой возможности sc.install_pypi_package
. Однако я могу добавить этот пакет более ручным способом. Первым шагом было создание zip-файла только из необходимых модулей, используя zip-файл с github проекта (в данном случае только pyspark2pmml
каталог, а не весь zip). Затем этот модуль можно добавить с помощью sc.addPyFile
sc.addPyFile('{some_path_to_s3}/pyspark2pmml.zip')
После этого я смогу выполнить исходные команды точно так, как я ожидал.