开发者社区> 问答> 正文

为什么full outer join不能使用MapJoin?

1)使用了也不会提高运行速度?
2)其他原因导致无法使用?

展开
收起
老狮子 2019-01-09 17:52:14 3600 0
3 条回答
写回答
取消 提交回答
  • MapJoin: 主要是对大表join小表的优化 如果左右表都是大表 会出现 使用了MapJoin也不会提高运行速度的情况

    2019-07-17 23:25:04
    赞同 展开评论 打赏
  • 这个是MaxCompute MapJoin说明文档中的一个限制
    https://help.aliyun.com/document_detail/73785.html?spm=a2c4g.11174283.6.635.719c590epmvNVw
    猜想:

       只要主动放入内存,速度必然要比不主动放入内存也就是普通算法快,无论什么查询,full join也不例外;

    推论:

       MaxCompute Mapjoin限制full join使用,可能是即使提升效率但性价比不高,所以没有采用,从程序角度考虑如果不出错的情况下,应该是允许使用的,所以这个解释有点牵强;
       那可能是程序算法上Mapjoin与full join有冲突错误导致限制,这个解释稍微合理一些;
       其他未知问题。
    

    不知道友是否赞同?

    2019-07-17 23:25:04
    赞同 展开评论 打赏
  • 这两个不是一个概念吧?

    Full outer join是全连接,返回左右表中的所有记录。

    MapJoin是Hive的一种优化操作,适用于小表JOIN大表的场景,这时表的JOIN操作是在Map端且在内存进行的。

    2019-07-17 23:25:04
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Lazy-Join Optimizations withou 立即下载
Lazy Join Optimizations Without Upfront Statistics 立即下载
低代码开发师(初级)实战教程 立即下载