目前MaxCompute内置了多种Join操作,包括Inner/Right Join、Outer/Left Jion、Outer/Full Join、Outer/semi/Anti-semi Join等。这些内置的Join操作功能强大,但由于其标准的Join实现,无法满足很多跨表操作的需求。
通常,可以通过UDF(User Defined Function)描述您的代码框架,但现有的UDF/UDTF/UDAF接口主要是针对在单个数据表上的操作而设计,一旦涉及多表的自定义操作,经常还需要依赖于内置Join +各种UDF/UDTF,并配合比较复杂的SQL语句来完成。在多表操作的场景上,您不得不放弃SQL而使用自定义MapReduce,才能完成所需的计算。
无论是Join +各种UDF/UDTF+复杂SQL还是自定义MapReduce门槛都比较高,同时还会带来一些问题: 使用Join +各种UDF/UDTF+复杂SQL:多个复杂的Join和散布在SQL语言各处的代码揉合在一起,将带来多处的逻辑黑盒,不利于生成最优的执行计划。 使用MapReduce:不仅更大程度上限制了系统进行执行优化的可能性,而且在深度优化本地运行代码时,由于MapReduce绝大部分代码由Java完成,在执行效率上会远低于MaxCompute基于LLVM代码生成器。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。