腾讯云数据仓库 TCHouse-X PySpark 依赖包管理

运行环境 TCHouse-X PySpark 默认基础环境为 Python 3.9.2。依赖提交方式可以以通过以下两种方式配置作业依赖,且两者可根据需求并行使用。

相关产品
腾讯云数据仓库 TCHouse-X 产品页,含版本规格、价格与购买入口。

一、简介

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。

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

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

五、使用虚拟环境

使用虚拟环境可以有效解决 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 命令打包,确保链接文件不丢失deactivate tar -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 打包示例:

注意:说明:

赞 (0)
上一篇 4天前
下一篇 4天前