简介
运行环境 TCHouse-X PySpark 默认基础环境为 Python 3.9.2。
依赖提交方式您可以通过以下两种方式配置作业依赖,且两者可根据需求并行使用:
1. 使用
--py-files 指定依赖:若您的依赖项为纯 Python 实现的模块或脚本,建议优先使用此方式,直接上传相关文件即可。2. 使用
--archives 挂载虚拟环境:若您的项目依赖较复杂,或包含需要编译安装的 C 相关依赖(如深度学习库、科学计算库),推荐将整个开发测试环境打包,并通过 --archives 方式分发,以保证运行环境的完整性。使用 --py-files 依赖包
该方式适用于纯 Python 实现的模块或文件,其中未包含任何 C 依赖。
步骤一:打包模块/文件
PyPI 外部包,需要在本地环境中,使用 pip 指令安装并打包常用依赖,要求依赖包使用纯 Python 实现,不依赖 C 相关库。
pip install -i https://mirrors.tencent.com/pypi/simple/ <packages...> -t depcd depzip -r ../dep.zip .
单文件模块(functions.py)和自定义 Python 模块都可以通过上述方法打包,需要注意的是自定义 Python 模块需要按照 Python 官方要求标准化,详情可参考 Python 官方文档 Python Packaging User Guide。
步骤二:引入打包好的模块


使用虚拟环境
使用虚拟环境可以有效解决 Python 依赖包(尤其是涉及 C 扩展的包,如
numpy, pandas, jieba 等)在分布式集群中的兼容性问题。通过将依赖预编译并打包上传,可以确保作业运行环境的一致性。前置要求:打包环境建议
由于部分 Python 依赖涉及 C 语言编译,为保证与计算节点环境兼容,强烈建议在以下环境中进行打包:
架构:x86_64
操作系统:Debian 11 (bullseye)
Python 版本:3.9.2步骤一:打包虚拟环境
我们提供了三种打包方式,您可以根据习惯选择其一。
方法 1:使用 Venv 打包
适用于依赖较少、环境简单的场景。
# 1. 创建虚拟环境python3 -m venv pyspark_venv# 2. 激活并安装依赖(建议使用腾讯云镜像源加速)source pyspark_venv/bin/activatepip3 install -i https://mirrors.tencent.com/pypi/simple/ <依赖包名># 3. 退出并压缩# 注意:必须使用 tar 命令打包,确保链接文件不丢失deactivatetar -czvf pyspark_venv.tar.gz pyspark_venv/
方法 2:使用 Conda 打包
适用于复杂依赖管理,建议配合
conda-pack 使用以确保环境完整迁移。# 1. 创建环境并安装 conda-packconda create -y -n pyspark_env python=3.9.2 conda-pack <其他包名># 2. 激活环境conda activate pyspark_env# 3. 使用 conda-pack 导出环境conda pack -f -o pyspark_env.tar.gz
方法 3:使用 Docker 自动化脚本打包
如果您本地有 Docker 环境(支持 Linux/Mac),可以使用我们提供的自动化脚本。该脚本会自动在标准 Debian 镜像中完成编译。
脚本参数说明:
参数 | 描述 | 备注 |
-r | 指定 requirements.txt 路径 | 必填 |
-n | 指定虚拟环境及输出压缩包的名称 | 默认:py3env |
-o | 指定保存本地的目录 | 默认:当前目录 |
-h | 打印帮助信息 | - |
步骤二:上传并配置虚拟环境
Step1: 上传资源
上传资源:将打包好的 .tar.gz 文件(如
py3env.tar.gz)上传至您的 COS(对象存储) 中。Step2:配置 --archives 参数(环境挂载)
在作业配置界面的
--archives 参数项中,填入虚拟环境包的完整资源路径。格式:
[资源路径]#[解压文件夹名称]示例:
cosn://mybucket/envs/python_env.tar.gz#venv
说明:
符号
# 用于指定压缩包在计算节点上的解压目录名称。该名称(如上例中的 venv)将直接影响后续运行环境参数的选择,请务必保持一致。Step3:配置 --config 参数(指定解释器)
为了让 Spark 任务识别并调用虚拟环境,需通过
--config 明确 Python 解释器的相对路径。请根据您的打包方式选择对应的路径:打包方式 | 推荐配置项与路径 | 说明 |
Venv 打包 | spark.pyspark.python=venv/pyspark_venv/bin/python3 | 默认 venv 结构通常多一层目录 |
Conda 打包 | spark.pyspark.python=venv/bin/python3 | 常用 Conda 打包后的标准路径 |
脚本打包 | spark.pyspark.python=venv/bin/python3 | 自定义脚本封装的常用路径 |
venv 打包示例:

说明:
路径验证:
venv 和 conda 因打包工具及参数不同,内部目录层级可能存在差异。手动核对:若任务运行报错(找不到文件),建议先在本地解压
.tar.gz 包,确认 python3 可执行文件相对于根目录的具体位置。参数引用:配置项中的
venv/ 前缀必须与第一步中 # 号后的名称严格对应。