列出 PySpark 作业中轮子中包含的 Python 包

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

我正在使用

spark-submit
CLI 提交 Spark 作业,并以
--py-files
(轮文件)作为参数。我想在驱动程序或执行程序端列出轮文件中包含的所有包。我怎样才能找到那个?尝试过
spark.sparkContext._jsc.sc().listJars()
,但是它只提供了 java jar,而不是 python 包。

apache-spark pyspark python-packaging
1个回答
0
投票

您可以通过访问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']

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