开发者社区> 问答> 正文

Python UDF报错function or view 'xxx' cannot be resol

Python UDF报错function or view 'xxx' cannot be resolved 怎么解决?

展开
收起
亢海鹏 2021-08-23 10:33:21 12822 0
1 条回答
写回答
取消 提交回答
  • MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速、全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您可以经济并高效的分析处理海量数据。

    1、确认使用UDF函数的项目和注册UDF函数的项目一致,请注意分辨是生产还是开发项目

    2、进入使用UDF函数的项目

    3、查看UDF函数信息 检查输出结果中“Class”是否正确,如果不对,需要重新注册函数。示例中 pyudf_test 是python文件pyudf_test.py的名字,SampleUDF是pyudf_test.py中定义UDF函数的类名(注意区分大小写)。 检查输出结果中“Resources”是否正确、完整,如果不对,需要重新注册函数。UDF里如果需要引用文件资源(get_cache_file)、表资源(get_cache_table)、压缩包资源(get_cache_archive)、第三方包,注册函数时要将这些资源填到资源列表里。

    4、查看资源信息,检查输出结果中资源的类型“Type”和更新时间“LastModifiedTime”是否正确: get_cache_file 使用的文件资源类型为 FILE get_cache_table 使用的表资源类型是 TABLE get_cache_archive 或三方包的资源类型是 ARCHIVE 确认是否已将datastudio中的资源正确同步到MaxCompute,如果 3.b 输出的LastModifiedTime不是最新的,可能是资源从datastudio同步到MaxCompute有延迟,资源还没更新。

    5、确认使用的是Python2还是Python3 UDF。 如果没有项目级别打开Python3 UDF,作业默认会使用Python2 UDF,此时Python文件中如果有非ASCII编码字符,会报错:SyntaxError: Non-ASCII charactor '\xe8' in file xxx. on line yyy. 如果要使用Python3 UDF,需要在SQL语句前加上 set odps.sql.python.version=cp37; 文档参考Python3 UDF

    2021-08-23 10:35:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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