本文为您介绍在依赖普通的Python脚本和开源三方包的场景下,如何使用DataWorks PyODPS节点调用第三方包。https://help.aliyun.com/zh/dataworks/use-cases/use-a-pyodps-node-to-reference-a-third-party-package?spm=a2c4g.11186623.0.i226
使用限制
在PyODPS节点中调用第三方包仅支持使用独享调度资源组。创建及使用独享调度资源组,详情请参见独享调度资源组。
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。
在DataWorks中,您可以使用pyodps-pack命令行工具来安装第三方库。这个工具从PyODPS的V0.11.3版本开始提供,使用方法与pip命令类似。
然而,需要注意的是,由于Python的沙箱限制,DataWorks中仅支持所有的纯粹Python库以及Numpy。这意味着一些其他常用的Python库,例如Pandas,并不能直接在此环境中使用。不过,您不必担心,因为DataWorks PyODPS节点已经预置了一些常用的三方包,同时提供了load_resource_package方法用以引用其他的包。
在DataWorks中,您可以使用pyodps-pack命令行工具来安装第三方库。这个工具从PyODPS 0.11.3版本开始提供,用于制作符合PyODPS和DataWorks PyODPS节点标准的第三方包。使用方法与pip命令类似。您可以通过该工具将所有依赖项目制作成一个.tar.gz压缩包,其中包含所有依照MaxCompute/DataWorks环境编译并打包的项目依赖。
然而,需要注意的是,DataWorks的PyODPS节点可能存在一些限制。例如,DataWorks的PyODPS节点可能缺少matplotlib等包,这可能会影响某些功能,如DataFrame的plot函数和DataFrame自定义函数需要提交到MaxCompute执行。此外,由于Python沙箱的限制,第三方库只支持所有的纯粹Python库以及Numpy,因此不能直接使用Pandas。
PyODPS默认支持执行纯Python且不含文件操作的第三方库。在较新版本的MaxCompute服务下,PyODPS也支持执行带有二进制代码或带有文件操作的Python库,但这些库名必须拥有一定的后缀。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。