pyspark - 如何添加到运行 PySpark 会话的类路径
问题描述
我有一个在 AWS EMR 中运行的 PySpark 笔记本。在我的具体情况下,我想用它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
我也需要的。
有没有一种方法可以让我使用可用的 JPMML 类启动 Spark 会话,但不更改任何其他设置?
解决方案
所以,这是一个答案,但不是我想要的。
要将该类添加到类路径中,我可以使用以下方法开始我的工作:
%%configure -f
{
"jars": [
"{some_path_to_s3}/jpmml-sparkml-executable-1.5.13.jar"
]
}
这产生了我上面提到的问题,我没有能力sc.install_pypi_package
。但是,我可以以更手动的方式添加该包。第一步是使用项目 github 中的 zip 创建一个仅包含所需模块的 zip 文件(在这种情况下,只是pyspark2pmml
目录,而不是整个 zip)。然后可以使用添加该模块sc.addPyFile
sc.addPyFile('{some_path_to_s3}/pyspark2pmml.zip')
在此之后,我可以完全按照我的预期运行原始命令。
推荐阅读
- java - HttpClient在java 11中读取响应体
- gcloud - 存储桶上传的文件未在所有挂载的虚拟机中显示
- google-cloud-platform - 我的 Google 社交登录应用程序已发布,但仍显示暂时禁用此应用程序
- angular - 路由 - 无法匹配任何路由。网址段
- kubernetes - 具有对象过滤的 kubernetes 资源级 RBAC
- python - 如何使用 2 个随机小写字母、大写字母、数字和标点符号构建密码?
- azure - 查看所有应用程序的示例
- javascript - 如何列出 JS 中的所有类?
- python - 尝试跟踪 ISS 时 reverse_geocoder 无法正常运行
- amazon-web-services - 如何再次在 aws 中使用 PEM 文件?