我正在使用
spark-submit
CLI 提交 Spark 作业,并以 --py-files
(轮文件)作为参数。我想在驱动程序或执行程序端列出轮文件中包含的所有包。我怎样才能找到那个?尝试过 spark.sparkContext._jsc.sc().listJars()
,但是它只提供了 java jar,而不是 python 包。
您可以通过访问SparkFiles根目录列出通过--py-files提交的.whl文件。这是实现这一目标的一个最小示例。假设这是您的火花提交,
spark-submit \
--master "local[4]" \
--py-files "/Users/lol/code/pyfilestest/whl-0.0.4-py2.py3-none-any.whl,\
/Users/lol/code/pyfilestest/dir2path-0.1.0-py3-none-any.whl" \
list_wheels.py
(就我而言,我添加了
dir2path-0.1.0-py3-none-any.whl
和whl-0.0.4-py2.py3-none-any.whl
)
这个脚本,通过spark-submit运行的
list_wheels.py
将打印通过--py-files提交的.whl文件列表,使您能够确认已上传哪些包。
from pyspark import SparkContext, SparkFiles spark-submit
import os
import glob
if __name__ == '__main__':
sc = SparkContext()
# List all wheel files in SparkFiles root directory
sparkfiles_dir = SparkFiles.getRootDirectory()
wheel_files = glob.glob(os.path.join(sparkfiles_dir, '*.whl'))
print("wheel_files:",wheel_files)
最终结果:
大量详细的日志记录,最后: 轮文件:
['/private/var/folders/6q/3pzrcjrd17b_gnh4wxv7_6gc0000gp/T/spark-171130cf-6c30-4fa3-8fea-8c8f84b8b9e6/userFiles-123dd9a8-2512-4205-ae1a-103d2dc6c51a/dir2path-0.1.0-py3-none-any.whl', '/private/var/folders/6q/3pzrcjrd17b_gnh4wxv7_6gc0000gp/T/spark-171130cf-6c30-4fa3-8fea-8c8f84b8b9e6/userFiles-123dd9a8-2512-4205-ae1a-103d2dc6c51a/whl-0.0.4-py2.py3-none-any.whl']