tencent cloud

文档反馈

PySpark 依赖包管理

最后更新时间:2024-09-18 18:00:04
    目前 DLC 的 PySpark 基础运行环境使用 Python=3.9.2。
    Spark 作业 Python 依赖可以使用如下两种方式:
    1. 通过 --py-files 指定依赖模块、文件。
    2. 通过--archives 指定虚拟环境。
    如果您的模块或文件使用纯 Python 实现 ,则推荐通过--py-files的方式指定。
    通过 --archives 的方式可以直接打包使用整个开发测试环境,这种方式支持编译安装 C 相关的依赖,推荐依赖环境较为复杂时使用。
    说明:
    上述两种方式可以根据您的需求同时使用。

    使用--py-files依赖包

    该方式适用于纯 Python 实现的模块或文件,其中未包含任何 C 依赖。

    步骤一:打包模块/文件

    PyPI 外部包,需要在本地环境中,使用 pip 指令安装并打包常用依赖,要求依赖包使用纯 Python 实现,不依赖 C 相关库。
    pip install -i https://mirrors.tencent.com/pypi/simple/ <packages...>  -t dep
    
    cd dep
    
    zip -r ../dep.zip .
    单文件模块(funtions.py)和自定义 Python 模块都可以通过上述方法打包,需要注意的是自定义 Python 模块需要按照 Python 官方要求标准化,详情可参考Python 官方文档Python Packaging User Guide

    步骤二:引入打包好的模块

    数据湖 DLC 控制台 的数据作业模块中新建作业。在--py-files参数中引入打包好的 dep.zip 文件,该可以通过上传到 COS 或者本地上传的方式引入。
    
    

    使用虚拟环境

    虚拟环境可解决部分 Python 依赖包对 C 的依赖问题。用户可根据需要,将依赖包编译安装进虚拟环境,然后将整个虚拟环境上传。 因为 C 相关的依赖涉及到编译安装,所以建议使用 x86架构的机器、Debian 11(bullseye) 系统、Python = 3.9.2 环境进行打包。

    步骤一:打包虚拟环境

    打包虚拟环境有两种方式,使用 Venv 打包和使用 Conda 打包。
    1. 使用 Venv 打包。
    python3 -m venv pyvenv
    
    source pyvenv/bin/activate
    
    (pyvenv)> pip3 install -i [https://mirrors.tencent.com/pypi/simple/](https://mirrors.tencent.com/pypi/simple/) packages
    
    (pyvenv)> deactivate
    
    tar czvf pyvenv.tar.gz pyvenv/
    2. 使用 Conda 打包。
    conda create -y -n pyspark_env conda-pack <packages...> python=<3.9.x>
    conda activate pyspark_env
    conda pack -f -o pyspark_env.tar.gz
    打包完毕后,将打包好的虚拟环境包pyvenv.tar.gz 上传到 cos 中。
    注意:
    请使用 tar 命令打包。
    3. 使用打包脚本
    使用打包脚本,您需要安装docker 环境, 目前支持 Linux / mac 环境。
    bash pyspark_env_builder.sh -h
    Usage:
    
    pyspark-env-builder.sh [-r] [-n] [-o] [-h]
    -r ARG, the requirements for python dependency.
    -n ARG, the name for the virtual environment.
    -o ARG, the output directory. [default:current directory]
    -h, print the help info.
    参数
    描述
    -r
    指定 requirements.txt 位置
    -n
    指定虚拟环境名称,默认 py3env
    -o
    指定虚拟环境保存本地目录,默认当前目录
    -h
    打印 help 信息
    # requirement.txt
    requests
    
    # 执行如下命令
    bash pyspark_env_builder.sh -r requirement.txt -n py3env
    等待脚本运行完成后,您可以在当前目录获取到 py3env.tar.gz,然后将该文上传到 cos。

    步骤二:指定虚拟环境

    数据湖 DLC 控制台 的数据作业模块中新建作业,参考如下截图操作。
    1. --archives 参数填入虚拟环境的完整路径, #号后面为解压文件夹名称。
    
    注意:
    “#”号用于指定解压目录。解压目录影响后续运行环境参数配置。
    2. --config 参数中指定运行环境参数。
    
    使用 Venv 打包方式请配置:spark.pyspark.python = venv/pyspark_venv/bin/python3
    使用 Conda 打包方式请配置:spark.pyspark.python = venv/bin/python3
    使用脚本打包方式请配置:spark.pyspark.python = venv/bin/python3
    说明:
    venv 和 conda 因打包方式不同,目录层级不同,具体可解压 .tar.gz 查看 python 文件相对路径。
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持