添加--py文件后,火花提交挂起

问题描述 投票:0回答:1

我有一个运行良好的脚本。脚本具有一些UDF,最后将数据保存到Hive表中。然后,我尝试通过将UDF函数放在不同文件夹下的不同脚本中来对脚本进行模块化。这样做之后,开始获取错误模块不存在。然后尝试打包模块,并使用--py-files传递它。但是,执行完此脚本后,该脚本将永远挂起。如果将代码放入模块而不是模块中,则一切正常文件夹结构就像

应用实用程序srcUtility.py零件srcmain_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出了什么问题?

pyspark user-defined-functions spark-submit python-packaging
1个回答
0
投票

我认为您应该尝试将整个路径传递给utils文件,例如:

--py-files /home/user_name/project/utils.zip

utils.zip应该与带有__init__.py文件等的python模块具有相同的结构。>

© www.soinside.com 2019 - 2024. All rights reserved.