java - java.lang.ClassNotFoundException: com.johnsnowlabs.nlp.DocumentAssembler spark 在 Pycharm 与 conda env
问题描述
我从 spark-nlp 保存了一个预训练模型,然后我尝试在 Pycharm 中使用 anaconda env 运行 Python 脚本:
Model_path = "./xxx"
model = PipelineModel.load(Model_path)
但我收到以下错误:(我尝试使用 pyspark 2.4.4 & spark-nlp2.4.4 和 pyspark 2.4.4 & spark-nlp2.5.4)得到同样的错误:
21/02/05 13:31:21 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Traceback (most recent call last):
File "C:/Users/xxxx/xxxxx.py", line 381, in <module>
model = PipelineModel.load(Model_path)
File "C:\Users\xxxxxxxx\anaconda3\envs\python3.7\lib\site-packages\pyspark\ml\util.py", line 362, in load
return cls.read().load(path)
File "C:\Users\\xxxxxxxx\anaconda3\envs\python3.7\lib\site-packages\pyspark\ml\pipeline.py", line 242, in load
return JavaMLReader(self.cls).load(path)
File "C:\Users\xxxxxxxx\anaconda3\envs\python3.7\lib\site-packages\pyspark\ml\util.py", line 300, in load
java_obj = self._jread.load(path)
File "C:\Users\xxxxxxxx\anaconda3\envs\python3.7\lib\site-packages\py4j\java_gateway.py", line 1257, in __call__
answer, self.gateway_client, self.target_id, self.name)
File "C:\Users\xxxxxxxx\anaconda3\envs\python3.7\lib\site-packages\pyspark\sql\utils.py", line 63, in deco
return f(*a, **kw)
File "C:\Users\xxxxxxxx\anaconda3\envs\python3.7\lib\site-packages\py4j\protocol.py", line 328, in get_return_value
format(target_id, ".", name), value)
py4j.protocol.Py4JJavaError: An error occurred while calling o314.load.
: java.lang.ClassNotFoundException: com.johnsnowlabs.nlp.DocumentAssembler
我是 pyspark 和 spark-nlp 的新手,有人可以帮忙吗?
解决方案
首先是一些背景。spark-nlp 库依赖于需要存在于 Spark 类路径中的 jar 文件。根据您在 PySpark 中启动上下文的方式,可以通过三种方式提供此 jar。a) 当你通过解释器启动你的 Python 应用程序时,你调用 sparknlp.start() 并且 jar 将被自动下载。
b)您使用 --jars 开关将 jar 传递给 pyspark 命令。在这种情况下,您从发布页面获取 jar 并手动下载。
c) 你启动pyspark并传递--packages,这里你需要传递一个maven坐标,例如,
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.11:2.7.5
请在此处查看文档,
https://github.com/JohnSnowLabs/spark-nlp#usage
并确保您选择了您想要的版本。
推荐阅读
- javascript - 错误:请求失败,状态码为 409
- flutter - Flutter showGeneralDialog 与 Slide 和 Fade 动画
- flexdashboard - Flexdashboard 布局在 4 个方块中设置一个作为选项卡集
- mysql - 如何将一列的列值组合到 MySQL 中的另一列中?
- node.js - 我正在尝试运行 npm install 但它给了我奇怪的错误
- c# - 尽管数据被正确传递,但记录没有添加到 SQL Server?(ASP.NET WEB API 和 Angular)
- javascript - 页面重新加载时,Tweenmax 不透明度会在短时间内保持为 1
- python - Vscode keras intellisense(建议)无法正常工作
- javascript - 在 onClick 的反应调用 setTimeout 似乎不等待
- r - 如何在 R 中生成的地图中插入更多颜色