开发者社区> 问答> 正文

什么是UDJ

什么是UDJ

展开
收起
Puppet 2020-03-19 22:51:38 3525 0
1 条回答
写回答
取消 提交回答
  • 目前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代码生成器。

    2020-03-19 22:51:51
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载