【发布时间】:2018-11-25 13:52:33
【问题描述】:
documentation for Spacy 2.0 提到开发人员已经添加了允许 Spacy 被腌制的功能,以便它可以被 PySpark 接口的 Spark Cluster 使用,但是,他们没有提供有关如何执行此操作的说明。
有人可以解释我如何腌制 Spacy 的英语 NE 解析器以在我的 udf 函数中使用吗?
这不起作用:
from pyspark import cloudpickle
nlp = English()
pickled_nlp = cloudpickle.dumps(nlp)
【问题讨论】:
-
如果你不介意跟进,我对你最终做了什么很感兴趣。
-
我找到了另一种解决方法来正确序列化 Spacy。相反,我创建了一个 UDF 函数,在其中设置了一个全局变量来存储我的 NLP 对象,然后我使用 try/except 循环来尝试使用 NLP 对象,如果这不起作用,请先初始化它然后使用它.这样,我只需要在每个 worker 中初始化一次,而不是在函数每次运行时初始化一次。
-
听起来不错!你能用一些代码回答这个 SO 问题吗?谢谢!
-
我的意思是这并不是我的问题的真正答案。这是一种解决方法,但可以肯定。
标签: python apache-spark pyspark user-defined-functions