首页
学习
活动
专区
工具
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;更重要的是:一次分析,多次使用,这也是为什么会提供性能的地方,达到了“少读”的目标。...AS (SELECT *FROM carinfo ), t2 AS (SELECT *FROM car_blacklist )SELECT *FROM t1, t2 注意:这里必须要整体作为一条sql

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篇---Hive使用优化

    一.前述 本节主要描述Hive优化使用,Hive优化着重强调一个 把Hive SQL 当做Mapreduce程序去优化 二.主要优化点 1.Hive运行方式: 本地模式 集群模式 本地模式 开启本地模式...: set hive.exec.mode.local.auto=true; 注意: hive.exec.mode.local.auto.inputbytes.max默认值为128M 表示加载文件的最大值...(一次SQL计算中允许并行执行的job个数的最大值) 3.严格模式 通过设置以下参数开启严格模式: set hive.mapred.mode=strict; (默认为:nonstrict非严格模式)...5 Hive Join 优化 Join计算时,将小表(驱动表)放在join的左边 Map Join:在Map端完成Join 两种实现方式: 1、SQL方式,在SQL语句中添加MapJoin标记(mapjoin...: map端做聚合操作是hash表的最大可用内容,大于该值则会触发flush hive.groupby.skewindata 是否对GroupBy产生的数据倾斜做优化,默认为false(自动优化解决思路如下

    3.5K10

    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的表的大小,...任务重需要执行insert overwrite table t_y select * from t_x;和 insert overwrite table t_z select * from t_x; 可以优化成...这种优化方式存在一个缺点:有可能部分数据永远不会被处理到

    1.1K11

    Hive高级优化

    1,FetchTask 不执行mapreduce,提高速度 设置的三种方式: 方法一: set hive.fetch.task.conversion=more; 方法二: bin/hive --hiveconf...hive.fetch.task.conversion=more 方法三: 上面的两种方法都可以开启了Fetch任务,但是都是临时起作用的;如果你想一直启用这个功能,可以在${HIVE_HOME}/conf.../hive-site.xml hive.fetch.task.conversion minimal <description...从这个案例可以看出,对mapred.map.tasks进行自动化的优化设置其实是可以很明显地提高作业执行效率的。 要求:文件数据压缩的方式为可分割的,比如BZip2Codec。...8//job并行执行的数目,一个SQL语句可能有很多mapreduce任务,限制hive.exec.parallel false hive执行开启: set hive.exec.parallel=true

    1.4K81

    Hive 性能优化

    Hive 性能优化,可以从三个方面来考虑,即存储优化、执行过程优化和作业调度流程优化。 存储优化 Hive 数据存储是 Hive 操作数据的基础。...执行过程优化 开启 MapJoin 在 Hive 中,hive.auto.convert.join 参数用于控制是否自动将非 MapJoin 转换为 MapJoin。...通过调整 hive.auto.convert.join 参数,你可以控制 Hive 是否自动将非 MapJoin 转换为 MapJoin,从而优化查询性能。...开启 skewjoin 在 Hive 中,hive.optimize.skewjoin 参数用于控制是否启用倾斜连接(Skew Join)优化。...true; set hive.stats.fetch.partition.stats=true; 注:如上优化开关不是万能钥匙,并非适用于所有情况,有时需要关闭,请结合具体的查询场景和 SQL 来设置

    52540

    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 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的表的大小,...任务重需要执行insert overwrite table t_y select * from t_x;和 insert overwrite table t_z select * from t_x; 可以优化成...这种优化方式存在一个缺点:有可能部分数据永远不会被处理到

    2.2K20

    (六)Hive优化

    set hive.merge.smallfiles.avgsize=16000000 ———————————————— 3.Write good SQL : 说道sql优化很惭愧,自己sql很烂,不多比比了...,但是sql优化确实很关键。。。...在Hive 1.1.0之后,这个feature是默认开启的,它可以自动优化HQL中多个JOIN的顺序,并 选择合适的JOIN算法. Hive在提交最终执行前,优化每个查询的执行逻辑和物理执行计划。...这些优化工作是交给底层来完成。 根据查询成本执行进一步的优化,从而产生潜在的不同决策:如何排序连接,执行哪种类型的连接,并行度等等。...要使用基于成本的优化(也称为CBO),请在查询开始处设置以下参数: 设置hive.cbo.enable = true; 设置hive.compute.query.using.stats = true;

    2.2K10

    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

    Hive - Hadoop与SQL

    Hive是什么 简单来说,通过 Hive 可以使用 SQL 来查询分析 Hadoop 中的大规模数据 Hive 的思路就是将结构化的数据文件映射为数据库表,然后把SQL语句转换为MapReduce任务来执行...下面看一个简单的示例,了解下 Hive 是怎么用的 hive> select count(*) from invites; 结果信息 .........Hive 在没有 Hive 的时候,对海量文件进行统计分析是比较麻烦的 例如一个日志文件,记录了用户的登录信息,如 用户名、日期、地点 现在想统计北京市的登录数据,就需要写一个mapreduce程序、打个...而且SQL的普及度高,学习成本很低 所以有人就会想,可不可以用SQL完成Hadoop中数据文件的分析统计呢?...Hive 便产生了,把Hadoop数据文件映射成表,把SQL自动转为mapreduce程序 通用性的需求可以直接使用 SQL 来完成,对于特殊需求,可以结合自定义的mapreduce方法来处理 极大的提高了大规模数据的统计效率

    1K110

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券