hive查询不加分区的一个异常
今天下午有同事反馈她提交了了一个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查询不加分区的一个异常的更多相关文章
- MySql每月增加一个分区以及查询所有分区
create PROCEDURE Usp_Partition() BEGIN DECLARE _time datetime; DECLARE num int; DECLARE _p VARCHAR(2 ...
- cdh5.7 做完HA后hive 查询出现异常: expected: hdfs://nameservice
异常信息如下: select * from b_pt_pr_customer_address_info limit 19; FAILED: SemanticException Unable to de ...
- Hive| 查询
Hive中执行SQL语句时,出现类似于“Display all 469 possibilities? (y or n)”的错误,根本原因是因为SQL语句中存在tab键导致,tab键在linux系统中是 ...
- Hive中静态分区和动态分区总结
目录 背景 第一部分 静态分区 第二部分 动态分区 第三部分 两者的比较 第四部分 动态分区使用的问题 参考文献及资料 背景 在Hive中有两种类型的分区:静态分区(Static Partitioni ...
- 什么是hive的静态分区和动态分区,它们又有什么区别呢?hive动态分区详解
面试官问我,什么是hive的静态分区和动态分区,这题我会呀. 简述 分区是hive存放数据的一种方式,将列值作为目录来存放数据,就是一个分区,可以有多列. 这样查询时使用分区列进行过滤,只需根据列值直 ...
- HIVE—索引、分区和分桶的区别
一.索引 简介 Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键. Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapRed ...
- Hive管理表分区的创建,数据导入,分区的删除操作
Hive分区和传统数据库的分区的异同: 分区技术是处理大型数据集经常用到的方法.在Oracle中,分区表中的每个分区是一个独立的segment段对象,有多少个分区,就存在多少个相应的数据库对象.而在P ...
- 【Hive学习之五】Hive 参数&动态分区&分桶
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 ...
- Hadoop Hive概念学习系列之hive里的分区(九)
为了对表进行合理的管理以及提高查询效率,Hive可以将表组织成“分区”. 分区是表的部分列的集合,可以为频繁使用的数据建立分区,这样查找分区中的数据时就不需要扫描全表,这对于提高查找效率很有帮助. 分 ...
随机推荐
- Java Servlet 3.0 新特性
Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若 ...
- word2tex之类的问题
首先就是这个word2tex一般是在word和tex文本互相转换的时候用的. 以前win7下用的chikrii忘了使用方法.. 之后再win10下用的excel2tex,但是转换时候总感觉不如word ...
- 你不知道的JavaScript(八)逻辑运算
JS的逻辑运算结果和其他一些强类型语言差别比较大,也比较容易让人产生困惑,看下面的例子: <script type="text/javascript"> var a = ...
- POJ 1182 食物链 (并查集解法)(详细注释)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 78510 Accepted: 23396 Description ...
- 51nod 1557 两个集合 (严谨的逻辑题)
题目: 1557 两个集合 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 小X有n个互不相同的整数: p1,p2,...,pn ...
- hiho1509 异或排序
题目链接 题目大意: 给定一个长度为 n 的非负整数序列 a[1..n] 你需要求有多少个非负整数 S 满足以下两个条件: (1).0 ≤ S < 260 (2).对于所有 1 ≤ i < ...
- UVa 1638 Pole Arrangement【递推】
题意:给出n根高度为1,2,3,---n的杆子,从左边能看到l根,右边能够看到r根,问有多少种可能 看的紫书的思路 先假设已经安排好了高度为2---i的杆子, 那么高度为1的杆子的放置方法有三种情况 ...
- HDU 1312 Red and Black【DFS】
搜索虐我千万遍@_@-----一道搜索的水题,WA了好多好多次@_@发现是n,m搞反了-_- 题意-- 给出m行 n列的矩形,其中从@出发,不能跳到#,只能跳到'.'问最多能够跳到多少块'.' 直接搜 ...
- [转载]PyCharm创建.py自动添加文件头注释
转自:https://blog.csdn.net/qq_36482772/article/details/67218214 创建.py文件时 顺便自动添加作者.时间.文件名信息…… mac系统打开编辑 ...
- [ZJOI2015]幻想乡战略游戏(点分树)
题意自己看... 思路 没想到今(昨)天刷着刷着点分治的水题,就刷出来了一个点分树... 然后就疯狂地找题解,代码,最后终于把它给弄懂了. 点分树——动态点分治,对于此题来说,我们设u为当前的补给站位 ...