• Hive任务优化(2)


    JOIN优化

    1.大多数情况下,Hive会对每对Join连接对象启动一个MapReduce任务。

    2.多表关联时,如果每个ON子句都使用相同的连接键的话,那么只会产生一个MapReduce Job。

    3.Hive总是按照从左到右的顺序执行。Hive会假定最后一张表是最大的表,在对每行记录进行连接操作时,它会将其他表进行缓存,然后扫描最后那个表进行计算。因此一般将最大表放置最后关联。也可以提供标记,显式告知最大表

    /*+STREAMTABLE(s)*/
    SELECT /*+STREAMTABLE(s)*/ s.ymd,s.symbol,s.price_close,d.dividend FROM stock s JOIN dividends d  ON s.ymd=d.ymd AND s.symbol=d.symbol WHERE s.symbol='APPL'

    4.map-side join

    如果所有表中只有一张表是小表,可以在最大表通过mapper的时候将小表放入内存中。

    /*+MAPJOIN(d)*/

  • 相关阅读:
    idea database testconnection 显示灰色
    idea tomcat热部署
    idea 常见报错问题 记录
    Python-Basis-22th
    Python-Basis-21th
    Python-Basis-20th
    Python-Basis-19th
    Python-Basis-18th
    Python-Basis-17th
    Python-Basis-16th
  • 原文地址:https://www.cnblogs.com/Dhouse/p/7159349.html
Copyright © 2020-2023  润新知