DataWorks配置for-each节点使用限制与注意事项是什么?
DataWorks for-each 节点使用需要注意以下几点:
谨慎设定 forfeach 节点的并发度(parallelism)。
如果并发度设置得过高,可能会造成数据资源压力过大,影响业务。
一般并发度建议保持在10-20之间即可。
分区过多的情况下,可能导致内存不足。
for-each 节点需要同时加载所有分区信息,如果分区数太多可能会超出内存限额。
可以考虑分批处理,或者调整数据模型降低分区数。
适当增加任务超时时间。
由于 for-each 节点需要依次遍历所有分区,处理时间可能会长到超时。
需要合理设置任务超时时间,避免任务失败。
数据清洗工作需要放在 for-each节点内。
只有放在 for-each 节点内,才能实现分区清洗与分区输出。
否则只会输出 for-each 前的数据结果。
事件驱动的 for-each 节点存在实时性差的问题。
建议只在需要批处理历史数据时使用,不要用于实时需求。
总的来说,开发人员需要对for-each节点的性能特点有一个清晰的认识,合理设置各项配置参数,目标确保任务能高性能有效的运行。
上下游依赖 for-each遍历节点需要遍历赋值节点传递的值,所以赋值节点需作为for-each节点的上游节点,for-each节点需要依赖赋值节点。循环支持仅DataWorks标准版及以上版本支持使用for-each节点。for-each节点最多支持循环128次,如果超过了128次,则运行会报错。实际循环遍历次数由上游赋值节点实际输出控制。一维数组类型的输出,循环遍历次数即为一维数组元素的个数。 例如,赋值节点的赋值语言为SEHLL或Python(Python2)时,输出结果为一维数组:2021-03-28,2021-03-29,2021-03-30,2021-03-31,2021-04-01,则for-each节点会循环5次完成遍历。二维数组类型的输出,循环遍历次数即为二维数组元素的行数。例如,赋值节点的赋值语言为OdpsSQL时,输出结果为二维数组:+----------------------------------------------+| uid | region | age_range | zodiac |+----------------------------------------------+| 0016359810821 | 湖北省 | 30~40岁 | 巨蟹座 || 0016359814159 | 未知 | 30~40岁 | 巨蟹座 |+----------------------------------------------+则for-each节点会循环2次完成遍历。内部节点您可以删除for-each节点的内部节点间的依赖关系,重新编排内部业务流程,但需要分别将start节点、end节点分别作为for-each节点内部业务流程的首末节点。在for-each节点的内部节点使用分支节点进行逻辑判断或者结果遍历时,需要同时使用归并节点。调测运行DataWorks为标准模式时,不支持在DataStudio界面直接测试运行for-each节点。 如果您想测试验证for-each节点的运行结果,您需要将包含for-each节点的任务发布提交到运维中心,在运维中心页面运行for-each节点任务。在运维中心查看for-each节点的执行日志时,您需要右键实例,单击查看内部节点来查看内部节点的执行日志。
https://help.aliyun.com/document_detail/137529.html,此回答整理自钉群“DataWorks交流群(答疑@机器人)”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。