Python pyspark.sql.functions.udf能否将.py模块分发到工作节点?

Python pyspark.sql.functions.udf能否将.py模块分发到工作节点?,python,sql,apache-spark,udf,Python,Sql,Apache Spark,Udf,我使用pyspark.sql.functions.udf定义一个udf,该udf使用从我编写的.py模块导入的类 from czech_simple_stemmer import CzechSimpleStemmer #this is my class in my module from pyspark.sql.functions import udf from pyspark.sql.types import StringType ...some code here... def clean

我使用
pyspark.sql.functions.udf
定义一个udf,该udf使用从我编写的.py模块导入的类

from czech_simple_stemmer import CzechSimpleStemmer #this is my class in my module
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType
...some code here...

def clean_one_raw_doc(my_raw_doc):
    ... calls something from CzechSimpleStemmer ...

udf_clean_one_raw_doc = udf(clean_one_raw_doc, StringType())
当我打电话时

df = spark.sql("SELECT * FROM mytable").withColumn("output_text", udf_clean_one_raw_doc("input_text"))
我收到一条典型的巨大错误消息,其中可能有相关部分:

File "/data2/hadoop/yarn/local/usercache/ja063930/appcache/application_1472572954011_132777/container_e23_1472572954011_132777_01_000003/pyspark.zip/pyspark/serializers.py", line 431, in loads
return pickle.loads(obj, encoding=encoding)
ImportError: No module named 'czech_simple_stemmer'
我是否正确理解pyspark将
udf\u clean\u one\u raw\u doc
分发到所有工作节点,但在节点的python安装中缺少
捷克语\u simple\u词干分析器.py
(仅存在于运行spark驱动程序的边缘节点上)

如果是的话,有没有办法让pyspark也发布这个模块?我想我可能可以手动将czech_simple_stemmer.py复制到所有节点的python,但1)我没有节点的管理员权限,2)即使我请求管理员将其放在那里,他也会这样做,如果我需要对模块本身进行一些调整,他可能会杀了我

从spark提交

对于Python,可以使用spark submit的--py files参数来添加 .py、.zip或.egg文件随应用程序一起分发。如果 您依赖于多个Python文件,我们建议将它们打包到 .拉链还是.鸡蛋


SparkContext.addPyFile(“my_module.py”)就可以了。

SparkContext.addPyFile
SparkContext.addPyFile(“module.py”)?非常感谢,这很有帮助。