本文为您介绍在依赖普通的Python脚本和开源三方包的场景下,如何使用DataWorks PyODPS节点调用第三方包。
背景信息
- DataWorks支持可视化创建Python资源,若需要依赖开源第三方包,请使用独享调度资源组并通过运维助手进行安装。
- DataWorks运维助手中安装的Python第三方包,仅支持在DataWorks独享调度资源组本地运行PyODPS任务代码时引用,如果需要在MaxCompute的Python UDF中引用Python第三方包,详情请参见Python UDF使用第三方包。
- 如果您的PyODPS任务需要访问特殊的网络环境(如VPC网络或IDC网络中的数据源或服务等),请使用独享调度资源组,并参考网络连通解决方案打通独享资源组与目标环境的网络连通。
- PyODPS语法及更多信息请参见PyODPS文档。
- PyODPS节点分为PyODPS 2和PyODPS 3两种,二者的区别在于底层Python语言版本不同。PyODPS 2底层Python语言版本为Python 2,PyODPS 3底层Python语言版本为Python 3,请您根据实际使用的Python语言版本创建PyODPS节点。更多创建PyODPS节点信息,请参见创建PyODPS 2节点和创建PyODPS 3节点。
使用限制
- DataWorks建议您在PyODPS节点内获取到本地处理的数据不超过50 MB,该操作受限于DataWorks执行资源的不同规格(包括公共调度资源组和独享调度资源组),处理的本地数据过多并超出操作系统阈值时可能发生OOM(Got killed)错误。请避免在PyODPS节点中写入过多的数据处理代码。详情请参见高效使用PyODPS最佳实践。
- 如果您发现有Got killed报错,即表明内存使用超限,进程被中止。因此,请尽量避免本地的数据操作。通过PyODPS发起的SQL和DataFrame任务(除to_pandas外)不受此限制。
- 非自定义函数代码可以使用平台预装的Numpy和Pandas。不支持其他带有二进制代码的三方包。
- 由于兼容性原因,在DataWorks中,options.tunnel.use_instance_tunnel默认设置为False。如果需要全局开启instance tunnel,需要手动将该值设置为True。
依赖普通的Python脚本
依赖开源的三方包
如果您依赖一个开源的三方包,需要使用PIP安装,且需要满足以下条件:
- 必须使用独享调度资源组,详情请参见购买资源组(创建订单)。
- 在独享调度资源组的运维助手中安装需要的三方包,详情请参见运维助手。PyODPS节点分为PyODPS 2和PyODPS 3:
- 如果依赖PyODPS 2节点,请执行如下命令。
pip install <需要安装的包> -i https://pypi.tuna.tsinghua.edu.cn/simple
执行命令后,如果提示需要升级PIP版本,请执行如下命令。pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
- 如果依赖PyODPS 3节点,请执行如下命令。
/home/tops/bin/pip3 install <需要安装的包> -i https://pypi.tuna.tsinghua.edu.cn/simple
安装了需要的三方包后,使用
import
命令导入对应包即可使用。例如,通过运维助手使用pip3 -install oss2
语句安装了oss2这个Python依赖包后,您可以在PyODPS 3节点中使用import oss2
语句导入oss2依赖包并使用。执行命令后,如果提示需要升级PIP版本,请执行如下命令。/home/tops/bin/pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
如果使用PyODPS 3出现如下报错,请提交工单申请开启权限。"/home/admin/usertools/tools/cmd-0.sh:行3: /home/tops/bin/python3: 没有那个文件或目录"
- 如果依赖PyODPS 2节点,请执行如下命令。