首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Hive常见故障多案例FAQ宝典 --项目总结(宝典二)

  • 25-02-20 13:41
  • 2379
  • 8554
blog.csdn.net

#Hive常见故障 #大数据 #生产环境真实案例 #Hive #离线数据库 #整理 #经验总结

说明:此篇总结hive常见故障案例处理方案 结合自身经历 总结不易 +关注 +收藏 欢迎留言

续写:Hive常见故障多案例FAQ宝典

         【1】参数及配置类常见故障  详见(点击跳转):Hive常见故障多案例FAQ宝典 --项目总结(宝典一)

         【2】任务运行类常见故障   详见(点击跳转): Hive常见故障多案例FAQ宝典 --项目总结(宝典一)

         【3】SQL使用类常见故障  本章

友情链接:Hive性能调优指导 --项目优化(指导书)


目录

SQL使用类常见故障 案例如下:

join中非常规join on写法导致任务运行慢

视图中多表union all,视图外指定分区查询慢

over(partition by orde by)使用同一字段,MapReduce任务运行慢

join on条件中使用or

SQL扫描分区过多,元数据SQL拼接过长报错

join表重复数据多,任务运行慢

SQL过于复杂,嵌套过多,导致HiveSQL编译时间过长

join on中加判断,导致MapReduce任务运行慢

join on中带不等于条件,导查询的数据都为Null

特殊写法导致大数据量只有一个reduce

cascade级联修改表字段

alter table drop partition删除大量分区慢、报错

大分区表查询不带分区,查询慢

两表关联,关联字段类型不一致

left join右表分区条件写在where后,查询慢

SparkSQL嵌套过多,大量case when

SparkSQL没有group by的情况下使用having

设置自定义参数出现递归调用

视图存在全表扫或者大量分区查询

大量使用with as并在SQL中多处调用

insert into table values形式插入大量数据

多表关联过滤条件中按in的子查询进行过滤

string类型字段过滤不加引号

使用order by null

使用浮点数进行运算

并发插入同表或同分区


SQL使用类常见故障 案例如下:

join中非常规join on写法导致任务运行慢

问题

两表join未写为标准的a join b on格式,使用a,b where a.*xx=b.xx*方式导致任务运行慢。

原因

该种SQL会造成笛卡尔积导致运行速度缓慢。针对该问题可以通过explain sql;打印执行计划,此时笛卡尔积的sql key为空,例如下图中keys0和1后无内容,代表没有key值:

解决方法

修改为标准join on语法,例如:a join b on a.*xx=b.xx*,修改完可再次打印执行计划看“keys”处是否有值了,有值则修改成功。


视图中多表union all,视图外指定分区查询慢

问题

视图定义为多表union all时,表的分区数据类型不同时,在视图外指定分区条件查询很慢,出现全表扫描。

原因

视图定义为多表union all时,表的分区数据类型不同时(varchar类型长度不同也为类型不同),在视图外指定分区条件不会下推到视图的表里,而是全表扫描后再做过滤。是否是全表扫描可以使用explain sql;打印执行计划查看,可通过以下两点确认:

  1. 是否有分区筛选条件,有则为未下推,全表扫描。

  2. 统计信息很大时为未下推,全表扫描。

例如:

  • 条件未下推,发生全表扫描执行计划:

        

  • 条件下推,未发生全表扫描的执行计划:   

     

解决方法

  1. 在创建视图时指定好分。

  2. 视图中的表的分区字段类型相同。


over(partition by orde by)使用同一字段,MapReduce任务运行慢

问题

over(partition by order by)中partition by与order by后字段一样,MapReduce任务运行缓慢。

原因

该语法是按指定字段分区后按指定字段排序,partition by与order by字段一致时order by无意义。partition by order by为快速排序,在存在大量相同数据时,且partition by的分区多的情况下任务运行缓慢。

解决方法

  1. 修改partition by与order by为不同字段。

  2. 删除命令中的order by。


join on条件中使用or

问题

表关联中带有or条件例如“a join b on a.xx=b.xx or a.xx=b.xx”, 数据量大时启动的MapReduce任务缓慢。

原因

join on条件中带or,没有key会产生笛卡尔积,可以通过explain sql**;**查看执行计划key是否有值:

解决方法

删除命令中的or,使用union all方式拼接。


SQL扫描分区过多,元数据SQL拼接过长报错

问题

SQL扫描表分区过多,拼接的元数据SQL过长导致客户端返回或者HiveServer与MetaStore运行日志里出现如下报错:

原因

SQL扫描表分区过多。

解决方法

修改SQL,减少分区遍历量,当前可以正常遍历2000以下分区。


注:本文转载自blog.csdn.net的的文章"https://blog.csdn.net/m0_57874805/article/details/145389059"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top