pyspark为自定义模块返回一个名为error的无模块

Arv*_*amy 2 python pyspark

我想导入一个包含一些模块的.py文件。我已经将文件init .py和util_func.py 保存在此文件夹下:

/usr/local/lib/python3.4/site-packages/myutil

util_func.py包含我要使用的所有模块。我还需要创建一个pyspark udf,以便可以使用它来转换我的数据框。我的代码如下所示:

import myutil
from myutil import util_func
myudf = pyspark.sql.functions.udf(util_func.ConvString, StringType())
Run Code Online (Sandbox Code Playgroud)

在代码下的某处,我正在使用它来转换数据框中的列之一:

df = df.withColumn("newcol", myudf(df["oldcol"]))
Run Code Online (Sandbox Code Playgroud)

那么我正在尝试查看它是否将其转换为我的使用:

df.head()
Run Code Online (Sandbox Code Playgroud)

它失败,并显示错误“没有名为myutil的模块”。

我能够调出ipython中的功能。莫名其妙的pyspark引擎看不到模块。知道如何确保pyspark引擎拾取模块吗?

rog*_*one 5

您必须使用设置工具构建软件包的egg文件,并将egg文件添加到应用程序中,如下所示

sc.addFile('<path of the egg file>') 
Run Code Online (Sandbox Code Playgroud)

sc是spark上下文变量。

  • 我使用 sc.addpyfile 而不是 addfile。我不必将包添加到设置工具中。导入模块后,我用 addpyfile 初始化了 sc,然后它就可以使用这些模块了。谢谢您的答复。 (2认同)