今天下午有同事反馈她提交了了一个SQL后,hive 查询就停止响应了。

我看了下,发现hiveserver确实hug住了。听过查看日志,发现了一个牛逼的SQL,

这个SQL很简单:

select
a.column1,
b.column2
from
a
left join
b
on a.id = b.id

这两张表都是很大的表,保存了好多年的数据,表b按照日期和类目进行了分区。

因为没有加限制,所以HiveMetaStore在获取分区的时候,会从mysql中获取这个表所有的分区信息,SQL如下:

select "PARTITIONS"."PART_ID", "SDS"."SD_ID", "SDS"."CD_ID",
"SERDES"."SERDE_ID", "PARTITIONS"."CREATE_TIME",
"PARTITIONS"."LAST_ACCESS_TIME", "SDS"."INPUT_FORMAT",
"SDS"."IS_COMPRESSED", "SDS"."IS_STOREDASSUBDIRECTORIES",
"SDS"."LOCATION", "SDS"."NUM_BUCKETS", "SDS"."OUTPUT_FORMAT",
"SERDES"."NAME", "SERDES"."SLIB" from "PARTITIONS" left outer join
"SDS" on "PARTITIONS"."SD_ID" = "SDS"."SD_ID" left outer join
"SERDES" on "SDS"."SERDE_ID" = "SERDES"."SERDE_ID"
where "PART_ID" in (8881686,8881687,8881688,8881689,8881690,8881691,8881692,8881693,
8881694,8881695,8881696,8881697,8881698,8881699,8881700,8881701,
8881702,8881703,8881704,8881705,8881706,8881707,8881708,8881709,
8881710,8881711,8881712,8881713,8881714,8881715,8881716,8881717,
8881718,8881719,8881720,8881721,8881722,8881723,8881724,8881725,
8881726,8881727,8881728,8881729,8881730,888173,
.........
.........
.........
,33429217,33429218) order by "PART_NAME" asc".

解释下里面的表:

  • SDS : 保存了每个表的分区的输入、输出格式、CD_ID 和SERDE_ID
  • PARTITIONS : 保存了分区的信息,包括名字,创建时间,最后访问时间,通过CD_ID和SDS表进行关联
  • SERDES : 保存了每个分区对应的序列化和反序列化的类名

上面的PART_ID从8881686 到 33429218,一共有2千多万,直接导致mysql抛出了异常,

com.mysql.jdbc.PacketTooBigException: Packet for query is too large
(1299572 > 1048576). You can change this value on the server by setting
the max_allowed_packet' variable.

解决办法就是重新设置max_allowed_packet的大小,并且在上面的sql中添加分区的限制。

后续还要看看问什么这个异常会导致后面的任务都无法提交到hiveserver了。

参考:

[1] http://blog.csdn.net/loseinworld/article/details/6856261

[2] http://blog.csdn.net/dabokele/article/details/51647332

hive查询不加分区的一个异常的更多相关文章

  1. MySql每月增加一个分区以及查询所有分区

    create PROCEDURE Usp_Partition() BEGIN DECLARE _time datetime; DECLARE num int; DECLARE _p VARCHAR(2 ...

  2. cdh5.7 做完HA后hive 查询出现异常: expected: hdfs://nameservice

    异常信息如下: select * from b_pt_pr_customer_address_info limit 19; FAILED: SemanticException Unable to de ...

  3. Hive| 查询

    Hive中执行SQL语句时,出现类似于“Display all 469 possibilities? (y or n)”的错误,根本原因是因为SQL语句中存在tab键导致,tab键在linux系统中是 ...

  4. Hive中静态分区和动态分区总结

    目录 背景 第一部分 静态分区 第二部分 动态分区 第三部分 两者的比较 第四部分 动态分区使用的问题 参考文献及资料 背景 在Hive中有两种类型的分区:静态分区(Static Partitioni ...

  5. 什么是hive的静态分区和动态分区,它们又有什么区别呢?hive动态分区详解

    面试官问我,什么是hive的静态分区和动态分区,这题我会呀. 简述 分区是hive存放数据的一种方式,将列值作为目录来存放数据,就是一个分区,可以有多列. 这样查询时使用分区列进行过滤,只需根据列值直 ...

  6. HIVE—索引、分区和分桶的区别

    一.索引 简介 Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键. Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapRed ...

  7. Hive管理表分区的创建,数据导入,分区的删除操作

    Hive分区和传统数据库的分区的异同: 分区技术是处理大型数据集经常用到的方法.在Oracle中,分区表中的每个分区是一个独立的segment段对象,有多少个分区,就存在多少个相应的数据库对象.而在P ...

  8. 【Hive学习之五】Hive 参数&动态分区&分桶

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 ...

  9. Hadoop Hive概念学习系列之hive里的分区(九)

    为了对表进行合理的管理以及提高查询效率,Hive可以将表组织成“分区”. 分区是表的部分列的集合,可以为频繁使用的数据建立分区,这样查找分区中的数据时就不需要扫描全表,这对于提高查找效率很有帮助. 分 ...

随机推荐

  1. Xamarin部署时遇到错误: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

    1 把adb命令加入到环境变量. ADB 的位置:C:\Users\USER\AppData\Local\Android\android-sdk\platform-tools 2. 卸载包,执行(是a ...

  2. How to get the MouseEvent coordinates for an element that has CSS3 Transform?

    I want to detect where a MouseEvent has occurred, in coordinates relative to the clicked element. Wh ...

  3. IOS7 textkit 的相关

    去年基于5.0开发的时候.自己用coreText编写了一个富文本,全部的效果都实现的非常好.可是没有去測试效率.只是在cell重用的时候表现不错.在4s上面也不会卡顿. 唯一一个问题就是,在使用AL的 ...

  4. Java知识点解析

    JAVA 1:简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是为家用消费电子产品 发送一个信息的分布式代码系统,通过发送信息控制电视机.冰箱等. 2:简单写出Jav ...

  5. vue-cli全引入jquery

    欢迎加入前端交流群交流知识&&获取视频资料:749539640 vue-cli全引入jquery:(vue-cli使用webpack) 第一步: 在package.json文件里的de ...

  6. POJ 3657 并查集

    题意: 思路: 1.二分+线段树(但是会TLE 本地测没有任何问题,但是POJ上就是会挂--) 2.二分+并查集 我搞了一下午+一晚上才搞出来----..(多半时间是在查错) 首先 如果我们想知道这头 ...

  7. WPF学习(三) - 依赖属性

    学习WPF时,我在看一本叫做“深入浅出WPF”的书.整整20页都在讲依赖性性和附加属性,反复看了几遍居然还是不懂,真是郁闷. 上一篇中WPF绑定的例子,其实已经用到了依赖属性. // 作为被绑定的目标 ...

  8. (转载)Android UI设计之AlertDialog弹窗控件

    Android UI设计之AlertDialog弹窗控件 作者:qq_27630169 字体:[增加 减小] 类型:转载 时间:2016-08-18我要评论 这篇文章主要为大家详细介绍了Android ...

  9. ZBrush雕刻生物小技巧

    本教程主要学习如何使用ZBrush®3D图形绘制软件的工具和笔刷雕刻酷酷的生物造型,我们今天来看看在游戏.媒体和电视领域有着十几年丰富经验的3D角色艺术家Francis-Xavier Martins是 ...

  10. nf_conntrack: table full, dropping packet. 问题

    查出目前 ip_conntrack 记录最多的前十名 IP: # cat /proc/net/nf_conntrack|awk '{print $8}'|cut -d'=' -f 2|sort |un ...