开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

UDF函数引用的python资源,能否使用上传的第三方包?

项目上需要实现将中文转为拼音的功能,python没有转拼音的内置函数,需要自定义函数。将使用第三方包的python资源,注册为UDF函数,调用该函数报错,提示函数未定义,对注册为UDF函数的pyhon资源是否有限制,是否不能使用第三方包?如果将python资源中的代码修改为不调用第三方包,则可以成功调用UDF函数

第1步:上传名称为pypinyin的第三方包;
第2步:创建python资源;
第3步:第2步创建的资源中编写python代码,定义入参、出参;
第4步:注册UDF;
第5步:调用UDF,提示找不到函数。

展开
收起
4bsh7ggokhkuc 2023-08-23 19:28:45 120 0
1 条回答
写回答
取消 提交回答
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    MaxCompute支持您在Python UDF中引用第三方包,例如Numpy包、需要编译的第三方包或依赖动态链接库的第三方包。

    通过Python UDF使用第三方包支持的场景如下:

    使用Numpy包(Python 3 UDF)

    您需要修改Numpy包的后缀格式,基于MaxCompute客户端上传Numpy包,并注册函数。函数注册成功后即可通过Python 3 UDF调用。

    使用需要编译的第三方包

    您需要在与MaxCompute兼容的环境下,对第三方资源包中的setup.py脚本进行编译生成WHEEL包,并修改后缀格式。基于MaxCompute客户端上传包,并注册函数。函数注册成功后即可通过Python UDF调用。推荐使用Linux环境,Windows用户推荐使用Docker。

    使用依赖动态链接库的第三方包

    您需要基于第三方包的源码编译so链接库,然后编译生成WHEEL包,并修改后缀格式。基于MaxCompute客户端上传包和so链接库文件,并注册函数。函数注册成功后即可通过Python UDF调用。

    前提条件 在执行操作前,请确认已完成如下操作:

    已安装Python环境。推荐使用Python 3。

    已安装并配置MaxCompute客户端。客户端配置详情请参见安装并配置MaxCompute客户端。

    如果您通过Python UDF使用需要编译的第三方包,请确认已安装pip、setuptools(通过pip install setuptools安装)和wheel(通过pip install wheel安装)。

    如果您使用的第三方包为GDAL 3.0及以上版本,请确认已安装PROJ 6。

    如果您通过Docker编译第三方包,请确认已安装Docker,详情请参见Docker安装文档。

    您可以通过MaxCompute内置的Python 3环境使用Numpy包。MaxCompute内置的Python 2环境默认安装了Numpy,不需要手动上传Numpy包。

    如果第三方包是PyPI页面中格式为TAR.GZ的压缩包,或从GitHub下载的源码包,这些包解压后的根目录下有时会存在setup.py文件。在使用这种类型的第三方包前,您需要先在与MaxCompute兼容的环境下将setup.py编译生成WHEEL包,然后再执行上传资源及注册函数操作,即可通过Python UDF调用第三方包。

    部分Python第三方包除了依赖Python库,可能还会依赖其它动态链接库的依赖。

    2023-08-24 09:34:06
    赞同 1 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载