首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hive SQL优化思路

Hive优化主要分为:配置优化SQL语句优化、任务优化等方案。其中在开发过程中主要涉及到可能是SQL优化这块。...使用with as 拖慢Hive查询效率除了join产生shuffle以外,还有一个就是子查询,在SQL语句里面尽量减少子查询。...但新版hive已经对小表JOIN大表和大表JOIN小表进行了优化。小表放在左边和右边已经没有明显区别。不过在做join过程中通过小表在前可以适当减少数据量,提高效率。 5....hive数据倾斜一般处理方案: 常见做法,通过参数调优: set hive.map.aggr=true; set hive.groupby.skewindata = ture; 当选项设定为...当然这些优化都是针对SQL本身优化,还有一些是通过参数设置去调整,这里面就不再详细描述了。

2K20

Hive中使用 with as 优化SQL

抛出问题: 当我们书写一些结构相对复杂SQL语句时,可能某个子查询在多个层级多个地方存在重复使用情况,这个时候我们可以使用 with as 语句将其独立出来,极大提高SQL可读性,简化SQL~ with...as简介 with as 也叫做子查询部分,首先定义一个sql片段,该sql片段会被整个sql语句所用到,为了让sql语句可读性更高些,作为提供数据部分,也常常用在union等集合操作中。...with as就类似于一个视图或临时表,可以用来存储一部分sql语句作为别名,不同是with as 属于一次性,而且必须要和其他sql一起使用才可以!...其最大好处就是适当提高代码可读性,而且如果with子句在后面要多次使用到,这可以大大简化SQL;更重要是:一次分析,多次使用,这也是为什么会提供性能地方,达到了“少读”目标。...注意事项 1. with子句必须在引用select语句之前定义,同级with关键字只能使用一次,多个只能用逗号分割;最后一个with 子句与下面的查询之间不能有逗号,只通过右括号分割,with 子句查询必须用括号括起来

2.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Hive SQL经典优化案例

    1.4 先看每个字段将会有多少分区(因为 Hive 表分区也不宜过多,一般一个查询语句涉及到 hive分区 应该控制在2K内) jdbc:hive2://ks-hdp-master-01.dns.rightpad...HiveSQL经典优化案例二: 问题描述:一个复杂SQL,查询执行一段时间后报错:基本上是查不出来; 分析函数对于大表来说不是 hive强项,这个时候我们将其分解成很多子集,并且合理利用 hive...HiveSQL经典优化案例三: 如下SQL,用到了 PERCENTILE_APPROX 函数,问题描述:如下SQL,用到了 PERCENTILE_APPROX 函数,个人初步分析认为:由于用到该函数次数太多...我仔细查了一下该函数,发现:它是支持“数组传参”,那么就不难找到优化SQL方法了。 ? 3.1 原SQL性能测试: ? 3.2 优化SQL,性能测试: ?...优化SQL,性能提升了4倍多。 ? ? ? 版权声明: 本文为大数据技术与架构整理,原作者独家授权。未经原作者允许转载追究侵权责任。 编辑|冷眼丶

    1.5K30

    Hive常用优化

    也不是越多越好,reduce 太多可能会产生非常多小文件,增加 namenode 压力,执行 MapReduce 任务也会产生很多map任务 三、小文件合并优化 --设置map端输出进行合并,默认为...set hive.merge.smallfiles.avgsize=16000000 四、注意sql编写 (1)列裁剪,需要列才输出,尽量不写* (2)分区裁剪,设置好分区,不需要分区不要读 (3)...能用一个 sql 写完,绝不用临时表 (4)hive 可以自动把 union all 优化成一个 jon,但尽量不要再 union all 中写 group by 和 join,可以做一个临时表。...五、数据倾斜 (1)检查 join 条件数值类型是不是一样 (2)join 操作之空 key 过滤,导致空值全在一个reduce中,可以使用下面的sql来解决这类问题 SELECT * FROM...= true;默认为trueset hive.mapjoin.smalltable.filesize=25000000; (4)使用 hive 自动数据倾斜优化 set hive.groupby.skewindata

    1.3K31

    Hive篇---Hive使用优化

    一.前述 本节主要描述Hive优化使用,Hive优化着重强调一个 把Hive SQL 当做Mapreduce程序去优化 二.主要优化点 1.Hive运行方式: 本地模式 集群模式 本地模式 开启本地模式...(一次SQL计算中允许并行执行job个数最大值) 3.严格模式 通过设置以下参数开启严格模式: set hive.mapred.mode=strict; (默认为:nonstrict非严格模式)...5 Hive Join 优化 Join计算时,将小表(驱动表)放在join左边 Map Join:在Map端完成Join 两种实现方式: 1、SQL方式,在SQL语句中添加MapJoin标记(mapjoin...自动mapjoin 通过修改以下配置启用自动mapjoin: set hive.auto.convert.join = true; (该参数为true时,Hive自动对左边表统计量,如果是小表就加入内存...是否对GroupBy产生数据倾斜做优化,默认为false(自动优化解决思路如下): Map端两个MapReduce,第一个Mapreduce随机来分发数据。

    3.5K10

    hive sql(一)

    每天分享一个sql,帮助大家找到sql快乐 需求 找出所有科目成绩都大于某一学科平均成绩学生 建表语句 create table score( uid string, subject_id...0; #结果 t2.uid 1001 Time taken: 33.267 seconds, Fetched: 1 row(s) 分析 1、重点1是科目开窗求每个平均分,这样每个科目后面都会匹配对应平均分...1,这是一种反向思维 4、然后对flag求和,和为0就是符合要求结果 扩展 select uid, subject_id, score, round(avg(score...,也就是说在原有的行记录再添加一列, 这个列每一行值是开窗结果集,结果集在每一行值是与分区键匹配 用程序语言表述一下: rows[keys:values] -- 多个不同key对应多个相同或不同...是否是group by中key子集 avg(key) --对每个子集数据计算,返回结果 key:result -- 运算之后,一个key对应一个result,这就是最终结果 对比: 1、over

    77720

    Hive SQL 学习

    partition by partition by关键字是分析性函数一部分,它和聚合函数不同地方在于它能返回一个分组中多条记录,而聚合函数一般只有一条反映统计值记录,partition by用于给结果集分组...e.RANK() ​ 生成数据项在分组中排名,排名相等会在名次中留下空位 f.DENSE_RANK() ​ 生成数据项在分组中排名,排名相等会在名次中不会留下空位 g.CUME_DIST...() ​ 小于等于当前值行数/分组内总行数 h.PERCENT_RANK () ​ 分组内当前行RANK值-1/分组内总行数-1 i.NTILE(n) ​ 用于将分组数据按照顺序切分成...n片,返回当前切片值,如果切片不均匀,默认增加第一个切片分布 Note: From子句:执行顺序自上而下,从左到右,从后往前,所以数据量少表尽量放后 where子句:执行顺序自下而上,从右到左,可以过滤掉大量记录条件写在...where子句末尾 group by子句:通过将不需要记录在group by之前过滤掉,避免使用having来过滤 having子句:尽量少用 select子句:尽量少用*,取字段名称 order

    1.2K20

    Hive Join优化

    在阐述Hive Join具体优化方法之前,首先看一下Hive Join几个重要特点,在实际使用时也可以利用下列特点做相应优化: 1.只支持等值连接 2.底层会将写HQL语句转换为MapReduce...,并且reduce会将join语句中除最后一个表外都缓存起来 3.当三个或多个以上表进行join操作时,如果每个on使用相同字段连接时只会产生一个mapreduce 具体优化建议: 1.合理设置...设置方式主要分两种: 1)自动方式 set hive.auto.convert.join=true; hive.mapjoin.smalltable.filesize,设置可以mapjoin大小,...同时可能还需要设置以下两个参数: set hive.limit.row.max.size=10000;设置最小采样容量 set hive.limit.optimize.limit.file=20;设置最大采样样本数...这种优化方式存在一个缺点:有可能部分数据永远不会被处理到

    1.1K11

    Hive高级优化

    1,FetchTask 不执行mapreduce,提高速度 设置三种方式: 方法一: set hive.fetch.task.conversion=more; 方法二: bin/hive --hiveconf...hive.fetch.task.conversion=more 方法三: 上面的两种方法都可以开启了Fetch任务,但是都是临时起作用;如果你想一直启用这个功能,可以在${HIVE_HOME}/conf...而CASE 2执行时间约为CASE 1执行时间59%。 从这个案例可以看出,对mapred.map.tasks进行自动化优化设置其实是可以很明显地提高作业执行效率。...用了Order by 8,并行执行 并行执行,意思是同步执行hive多个阶段,hive在执行过程,将一个查询转化成一个或者多个阶段。...8//job并行执行数目,一个SQL语句可能有很多mapreduce任务,限制hive.exec.parallel false hive执行开启: set hive.exec.parallel=true

    1.4K81

    Hive 性能优化

    Hive 性能优化,可以从三个方面来考虑,即存储优化、执行过程优化和作业调度流程优化。 存储优化 Hive 数据存储是 Hive 操作数据基础。...存储格式 Hive 支持存储文件格式有如下几种: TextFile 文本格式 SequenceFile 二进制序列化文件 RCFile 行列式文件 Apache Parquet ORCFile 优化行列式文件...开启 skewjoin 在 Hive 中,hive.optimize.skewjoin 参数用于控制是否启用倾斜连接(Skew Join)优化。...启用 hive.optimize.skewjoin 参数后,Hive 会自动监测连接操作中倾斜情况,并尝试采用优化策略,如动态重分区、动态调整任务大小等来解决倾斜连接问题,使查询任务可以更均匀地分布在集群上...true; set hive.stats.fetch.partition.stats=true; 注:如上优化开关不是万能钥匙,并非适用于所有情况,有时需要关闭,请结合具体查询场景和 SQL 来设置

    52140

    Hive SQL这几个优化思路你必须要知道!

    Hive优化主要分为:配置优化SQL语句优化、任务优化等方案。其中在开发过程中主要涉及到可能是SQL优化这块。...使用with as 拖慢Hive查询效率除了join产生shuffle以外,还有一个就是子查询,在SQL语句里面尽量减少子查询。...但新版hive已经对小表JOIN大表和大表JOIN小表进行了优化。小表放在左边和右边已经没有明显区别。不过在做join过程中通过小表在前可以适当减少数据量,提高效率。 5....hive数据倾斜一般处理方案: 常见做法,通过参数调优: set hive.map.aggr=true; set hive.groupby.skewindata = ture; 当选项设定为...当然这些优化都是针对SQL本身优化,还有一些是通过参数设置去调整,这里面就不再详细描述了。 但是优化核心思想都差不多: 1. 减少数据量; 2. 避免数据倾斜; 3. 减少JOB数; 4.

    1.3K20

    (六)Hive优化

    set hive.merge.smallfiles.avgsize=16000000 ———————————————— 3.Write good SQL : 说道sql优化很惭愧,自己sql很烂,不多比比了...,但是sql优化确实很关键。。。...在Hive 1.1.0之后,这个feature是默认开启,它可以自动优化HQL中多个JOIN顺序,并 选择合适JOIN算法. Hive在提交最终执行前,优化每个查询执行逻辑和物理执行计划。...这些优化工作是交给底层来完成。 根据查询成本执行进一步优化,从而产生潜在不同决策:如何排序连接,执行哪种类型连接,并行度等等。...set hive.optimize.index.filter=true;--自动使用索引,使用聚合索引优化group by操作,如果是orc表,可以使用orc索引,加快读取hive数据 set

    2.2K10

    hive优化总结

    Hive拥有统一元数据管理,所以和Spark、Impala等SQL引擎是通用。...Hive函数 HiveSQL还可以通过用户定义函数(UDF),用户定义聚合(UDAF)和用户定义表函数(UDTF)进行扩展。...set hive.merge.smallfiles.avgsize=16000000 3.5 SQL优化 3.5.1 列裁剪   Hive在读数据时候,可以只读取查询中所需要用到列,而忽略其他列...节省了两个临时表读写是一个关键原因,这种方式也适用于Oracle中数据查找工作。   SQL具有普适性,很多SQL通用优化方案在Hadoop分布式计算方式中也可以达到效果。...3.5.7 解决Hive对UNION ALL优化短板   Hive对union all优化特性:对union all优化只局限于非嵌套查询 消灭子查询内group by   示例1:子查询内有group

    1.7K41

    Hive Join优化

    在阐述Hive Join具体优化方法之前,首先看一下Hive Join几个重要特点,在实际使用时也可以利用下列特点做相应优化: 1.只支持等值连接 2.底层会将写HQL语句转换为MapReduce...,并且reduce会将join语句中除最后一个表外都缓存起来 3.当三个或多个以上表进行join操作时,如果每个on使用相同字段连接时只会产生一个mapreduce 具体优化建议: 1.合理设置...设置方式主要分两种: 1)自动方式 set hive.auto.convert.join=true; hive.mapjoin.smalltable.filesize,设置可以mapjoin大小,...同时可能还需要设置以下两个参数: set hive.limit.row.max.size=10000;设置最小采样容量 set hive.limit.optimize.limit.file=20;设置最大采样样本数...这种优化方式存在一个缺点:有可能部分数据永远不会被处理到

    2.2K20

    详解hivejoin优化

    hive Optimizer改进 注意,本文讨论hive join优化器是从hive 0.11.0版本起添加, 本文描述了Hive查询执行计划优化,以提高join效率并减少对用户提示需求。...Hive自动识别各种用例并对其进行优化Hive 0.11改进了这些情况优化器: Join过程中加入有表可以存于内存。...星形join增强功能 Hive 0.11中优化器增强功能专注于有效处理星型模型中所需join。最初工作仅限于星型模型join,其中projection和filter后所有维度表同时适合内存。...现在也实现了只有一些维度表适合内存情景(HIVE-3996)。 连接优化可以分为三个部分: 在使用maphints时,在单个仅有mapjob中执行mapjoins链。...将优化扩展到自动转换情况(在优化时生成适当备份计划)。 在任务端完全生成内存哈希表。(未来工作。) 以下部分介绍了每种优化程序增强功能。

    3.8K10

    hive sql系列(总结)

    hive sql系列(总结)介绍: hive sql系列主打sql,通过案例,从实现到分析,帮助大家找到写sql快乐 hive sql系列目录: hive sql系列(一):找出所有科目成绩都大于某一学科平均成绩学生...hive sql系列(二):统计每个用户每个月访问量和累计月访问量 hive sql系列(三):求所有用户和活跃用户总数及平均年龄 hive sql系列(四):请用sql写出所有用户中在今年10月份第一次购买商品金额...hive sql系列(五):一个日志表中记录了某个商户费率变化状态所有信息,现在有个需求,要取出按照时间轴顺序,发生了状态变化数据行 hive sql系列(六):每个用户连续登录最大天数 hive...sql系列(七):查询前20%时间订单信息 hive sql系列(八):根据聚合在一起编码转换成聚合在一起码值 hive sql系列(九):有一张表,其中一个字段是由时间、接口、ip和其他字段组成求...(重点:开窗、子查询、需要条件过滤在子查询中先过滤) 3、hive sql系列(三)是一个级联求和典型例子,意思是当月和累计在一起意思,以此类推,相似的场景都可以用hive sql系列(三)方式做

    1.8K40
    领券