开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

大数据计算MaxCompute odps script 调用UDF函数没问题,但是在pyodps中?

大数据计算MaxCompute odps script 调用UDF函数没问题,但是在pyodps中调用udf函数报错
ScriptError: ODPS-0123055: InstanceId: 20230809084802771gotqe4
ODPS-0123055:Script exception - Traceback (most recent call last):
File "/home/admin/calculate_oil_dilution_rate.py", line 56, in init
from odps_bak import ODPS
File "work/odps_bak.zip/odps_bak/init.py", line 24, in <module>
from .core import ODPS
File "work/odps_bak.zip/odps_bak/core.py", line 22, in <module>
from .rest import RestClient
File "work/odps_bak.zip/odps_bak/rest.py", line 24, in <module>
import requests
File "work/requests.zip/requests/init.py", line 45, in <module>
from .exceptions import RequestsDependencyWarning
File "work/requests.zip/requests/exceptions.py", line 9, in <module>
from .compat import JSONDecodeError as CompatJSONDecodeError
File "work/requests.zip/requests/compat.py", line 13, in <module>
import charset_normalizer as chardet
File "work/charset_normalizer.zip/charset_normalizer/init.py", line 24, in <module>
from .api import from_bytes, from_fp, from_path, normalize
File "work/charset_normalizer.zip/charset_normalizer/api.py", line 35
sequences: bytes,
^
SyntaxError: invalid syntax
我的udf函数前面加了# coding:utf-8 ,是不是就意味着这是udf python2?

展开
收起
真的很搞笑 2023-08-13 11:02:22 167 0
2 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    是的,当您在UDF函数的代码文件中添加了# coding:utf-8注释时,这意味着您的UDF函数是使用 Python 2 编写的。Python 2 和 Python 3 在语法和特性上存在一些差异,因此在使用 Python 2 编写的代码在 Python 3 环境中可能会出现语法错误。

    根据您提供的错误信息,可以看到在 charset_normalizer 模块中出现了语法错误,这表明该模块可能不兼容 Python 2。在 Python 3 中,使用 : 来注解函数参数的类型是合法的,但在 Python 2 中则不被支持,因此会导致 SyntaxError: invalid syntax 错误。

    要解决这个问题,您有以下几个选项:

    迁移至 Python 3:将您的 UDF 函数代码迁移到 Python 3,并确保您的依赖库也兼容 Python 3。这样可以避免 Python 2 和 Python 3 之间的兼容性问题。

    检查依赖库:检查您的代码中使用的依赖库是否兼容 Python 2,并确保使用与 Python 2 兼容的版本。如果某些依赖库不支持 Python 2,您可能需要考虑升级这些库或者寻找替代方案。

    使用支持 Python 2 的 pyodps 版本:如果迁移到 Python 3 不可行,您可以尝试使用支持 Python 2 的旧版本 pyodps。您可以查看 pyodps 的文档或官方仓库来获取适用于 Python 2 的版本。

    2023-08-13 22:30:47
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    PyODPS架构以及DataFrame实现原理 立即下载