SQL节点性能消耗较大的原因主要有以下几点:
1. SQL节点需要对数据表进行全表扫描,重新判断字段类型和计算结果,这比其他节点更消耗计算资源。特别是在处理脏数据时,可能导致字段类型显示变化,需要重新提交保存才能预览正确数据。
2. SQL节点处理复杂逻辑时效率较低。如果SQL中包含多层嵌套函数(特别是窗口函数),计算复杂度会显著升高,在大数据量情况下可能导致服务器资源不足。例如sum(case when...这种嵌套计算就不如拆分成多个节点高效。
3. 使用collect_set、collect_list等函数会生成大量中间数据,数据量大时可能导致磁盘和性能问题。这类函数每个分组的行数应控制在50万以内。
4. 预览SQL节点结果时加载时间长,容易出现超时现象,而且后续维护和修改SQL逻辑较为困难。
ETL优化建议参考:https://community.guandata.com/portal.php?mod=view&aid=28 |