Python UDF报错function or view 'xxx' cannot be resolved 怎么解决?
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。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。