我有一个运行良好的脚本。脚本具有一些UDF,最后将数据保存到Hive表中。然后,我尝试通过将UDF函数放在不同文件夹下的不同脚本中来对脚本进行模块化。这样做之后,开始获取错误模块不存在。然后尝试打包模块,并使用--py-files传递它。但是执行完此脚本后,该脚本将永远挂起。如果将代码放入模块而不是模块中,则一切正常 文件夹结构就像
application utils src utility.py component src main_Script.py
在main_script.py中,我有
import utils.src.utility as local_util
utility.py 具有udf func之类的
@func.udf("string")
def some_function:
...
..
return 'xyz'
主要
许多操作,然后
from spark.sql import function as func
def main(df):
df = df.withColumn('col1', local_utils.some_function(func.col('col2')))
然后将df保存到配置单元表中。 脚本执行类似\
spark-submit --queue xxx master yarn main.py
获取错误模块工具不存在
在检查文档时,建议打包utils并将其作为--py-files
传递所以我压缩了utils,然后通过了
spark-submit --queue xxx master yarn --py-files utils.zip main.py
这项工作永远挂掉
如果我将utils代码放在main.py中然后运行,则一切正常。
所以想知道使用--py-files是怎么回事?
答案 0 :(得分:0)
我认为您应该尝试将整个路径传递给utils文件,例如:
--py-files /home/user_name/project/utils.zip
utils.zip应该与带有__init__.py
文件等的python模块具有相同的结构。