新版 MaxCompute Isolation Session 支持 Python UDF。也就是说,Python UDF 中已经可以跑二进制包。刚才以 Scipy 为例踩了一下坑,把相关的过程分享出来。
下载 Scipy 包并上传资源
首先,从 PyPI 或其他镜像下载 Scipy 包。你需要下载后缀为“cp27-cp27m-manylinux1_x86_64.whl”的包,其他的包会无法加载,包括名为“cp27-cp27mu”的包。以下的截图来自 ,仅有打勾的包可以直接使用:
下载 whl 后,将文件名更改为 scipy.zip。此后,在 MaxCompute Console 中执行
add archive scipy.zip;
此后,scipy.zip 即被创建为 MaxCompute Archive 资源。不建议使用其他类型的资源,因为在执行时,MaxCompute 会自动解压 Archive 类型的资源,从而省去手动解压的步骤。
从非 Whl 包生成 Whl 包
如果列出的包中包含 Whl,则可以直接上传并跳过此步骤。如果列出的包不包含 whl(如手中仅有图中的 scipy-0.19.0.zip),需要在 Linux 环境中手动编译并打包为 whl。打包前,需要确保下列命令返回“cp27m”而不是“cp27mu”:
python -c "import pip; print pip.pep425tags.get_abi_tag()"
如果返回值为“cp27mu”,你需要使用 “--enable-unicode=no" 选项编译一个可用的 Python 2.7,再使用编译得到的 Python。如果返回值正确,通常可以在该环境下使用
python setup.py bdist_wheel
完成,具体请参考各个包的编译/安装说明。
打包完成后,将生成的 whl 包上传。