hive sql优化基础

文章目录


提示:本文非原创。记录此文的目的:再学习和梳理sql 优化知识点,方便以后遇到类似问题方便查阅以及快速处理。

一、数据倾斜分类

根据使用经验总结,引起数据倾斜的主要原因有如下几类:

  • Join

  • GroupBy

  • Count(Distinct)

  • ROW_NUMBER(TopN)

  • 动态分区

其中出现的频率排序为JOIN > GroupBy > Count(Distinct) > ROW_NUMBER > 动态分区。

二、Join倾斜

1.大表Join小表

使用MAPJOIN HINT语法,如下所示。

sql 复制代码
SELECT  /*+ mapjoin(t2,t3)*/
        t1.ip
        ,t1.is_anon
        ,t1.user_id
        ,t1.user_agent
        ,t1.referer
        ,t2.ssl_ciphers
        ,t3.shop_province_name
        ,t3.shop_city_name
FROM    <viewtable> t1
LEFT OUTER JOIN (<other_viewtable>) t2
ON t1.header_eagleeye_traceid = t2.eagleeye_traceid
LEFT OUTER JOIN (  SELECT  shop_id
                            ,city_name AS shop_city_name
                            ,province_name AS shop_province_name
                    FROM    <tenanttable>
                    WHERE   ds = MAX_PT('<tenanttable>')
                    AND     is_valid = 1
                ) t3
ON t1.shopid = t3.shop_id
相关推荐
杨云龙UP3 小时前
小工具大体验:rlwrap加持下的Oracle/MySQL/SQL Server命令行交互
运维·服务器·数据库·sql·mysql·oracle·sqlserver
阿巴~阿巴~3 小时前
使用 C 语言连接 MySQL 客户端(重点)
服务器·数据库·sql·mysql·ubuntu
清水加冰3 小时前
【MySQL】SQL调优-如何分析SQL性能
数据库·sql·mysql
风跟我说过她3 小时前
CentOS 7 环境下 MySQL 5.7 深度指南:从安装、配置到基础 SQL 操作
sql·mysql·centos
编程充电站pro4 小时前
SQL 面试题解析:如何用多表查询写用户订单统计?
数据库·sql
编程充电站pro15 小时前
SQL 面试高频:INNER JOIN vs LEFT JOIN 怎么考?
数据库·sql
这周也會开心15 小时前
SQL-窗口函数做题总结
数据库·sql
风跟我说过她16 小时前
Sqoop的安装与配置
hive·hadoop·经验分享·centos·hbase·sqoop
编程充电站pro19 小时前
面试陷阱:SQL 子查询 vs JOIN 的性能差异
数据库·sql