dataworks中为什么代码在pyodps3运行时正常,把代码放到赋值节点运行就出错了?或者说赋值节点编辑代码有什么限制吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
有几个原因可能造成DataWorks代码在PyODPS3节点正常但在赋值节点出错:
版本不兼容
赋值节点默认使用的是pyodps2版本,而可能你测试时用的是pyodps3版本。这两种版本API有差异。
依赖不完整
赋值节点使用的数据仓库中可能没有完整地安装pyodps3及其依赖。而你测试时本地环境完整。
代码风格限制
赋值节点对于可执行的代码有一定限制,如不支持with上下文管理器。
异常隐藏
赋值节点在执行脚本时,异常信息不一定清晰地反馈给用户。可能需要查看详细日志排查。
节点输出模式
赋值节点有update和insert两种输出模式,对代码有限制。
资源限制
赋值节点运行时可能受到资源(CPU/内存)限制,影响代码性能。
网络环境
赋值节点运行环境可能存在网络限制,而你测试时网络更畅通。
所以在DatWorks赋值节点执行代码时,最好做到:
使用pyodps2而非pyodps3编写代码
避免使用with上下文管理器
注意异常信息来自详细日志
匹配节点的输出模式
考虑资源限制对性能的影响
检查网络环境
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。