Hive分区表count(*)不起mapreduce的真相
来源:互联网 发布:剑雨江湖灵骑进阶数据 编辑:程序博客网 时间:2024/05/22 01:40
问题背景:
在对Hive求count(*)时,发现有些表会启mapreduce计算、返回 结果,比较耗时,有的表1秒之内返回结果
刚开始以为刚刚执行过一次count()后会对结果进行缓存,不用再去跑mapreduce,但经进一步实验发现大多数表每次执行count()操作都会跑mapreduce,于是猜测的结论不成立。
后在必应查找原因,大部分的结果都指向了:‘hive从1.0开始采用Fetch Task, 对于简单查询的自动优化’
具体内容可以参考:http://blog.javachen.com/2014/06/09/fetchtask-in-hive.html
查找思路:
经过了解Fetch Task发现,它对简单查询会直接读取文件,但是不适用于聚合操作,继续查找原因,发现有人提到分区表,是有把分区的信息写入元数据,于是查看hive的mysql元数据表。
问题解决:
在hive的元数据库‘hive’库中有8张跟分区表有关的表,其中partitions保存有分区表的源表、分区id等信息,而在另一张表‘partition_params’表中存有 part_id 和对应的参数值(其中包括行数,行数据大小,总大小等)
答案就很明了了,分区表的count(*)是从元数据表中所取,而并非从所有节点上 map 然后reduce。
阅读全文
0 0
- Hive分区表count(*)不起mapreduce的真相
- [Hive]MapReduce将数据写入Hive分区表
- HIVE的分区表
- Hive的数据模型-分区表
- 初学HADOOP(MAPREDUCE-WORLD COUNT/HIVE/SQOOP)
- Hive---外部分区表的创建
- Hive中分区表的操作
- Hive的数据模型之分区表
- Hive学习笔记 --- Hive分区表的操作
- hive 分区表
- Hive分区表
- Hive分区表
- Hive分区表
- hive 分区表
- hive分区表
- hive分区表
- hive count表提交mapreduce任务报错。
- 05分布式数据仓库 HIVE -- 分区表的操作
- eova开发几个低级问题
- 并查集模版
- vue项目中,main.js,App.vue,index.html如何调用
- 指针中P和P+1的大小关系的比较
- IOS 自定义framework
- Hive分区表count(*)不起mapreduce的真相
- 机器学习实战学习笔记(七)预测数值型数据—回归(python3实现)
- java注解的使用
- jQuery中AJAX的跨域解决方案
- 二叉树专题-lintcode翻转二叉树
- uva1637 概率dp(记忆化搜索)
- hadoop-2.8.1源码
- C++程序设计案例实训教程 目录
- 利用FFmpeg对RGB图像进行H264编码