学习数据仓库Hive
数据分析引擎:hive
大数据的终极目标:使用SQL语句来处理大数据
1,hadoop的体系架构中:
两个数据分析引擎:(*)Hive:支持sql
(*)Pig:支持PigLatin
一,什么是hive?
1,hive是一个基于hdfs之上的数据仓库
hive hdfs
表 目录
数据 文件
分区表 目录
分桶 文件
2,hive是基于hadoop之上的一个数据分析引擎
也就是说Hive是一个翻译器(hive 2.x以前:sql语句由hive编译成mr,hive2.x以后:sql语句由hive编译成spark程序)
3,hql是sql的一个子集,不完全支持sql
二,hive的体系架构
hive是基于在hdfs之上的,数据也是存在于我们的从节点Datanode上面的。
第一种方式:我们可以通过cli命令行写sql语句,然后由Hive Driver转换成MR任务去处理数据
第二种方式:通过jdbc的方式,需要指定url确定访问地址,而且需要通过中间人(1.x Thrift server 2.x HiveServer2 端口都是10000)把sql语句提交给我们的hiveDriver驱动
第三种方式 基于网页去执行sql,用HWI(Hive Web Interface只有hive2.2版本以前才提供,2.2之后使用HUE去使用)去提交sql到HiveDriver上去运行.
注意:hive架构中元数据要单独存储在数据库中(推荐使用mysql去存储),通过读取mysql数据库中存储的hive元数据得到hive里面存储的真正的数据(数据模型),
因为hive元数据存储了hive的表名、列名、列的类型 、分区、分桶、其他信息.
三,hive的数据模型
1,内部表:类似于Mysql,Oracle里面的表
2,外部表:只定义表结构,真正的数据存储在hdfs的某个目录上。可以通过查看外部表的方式查看到这一个路径下所有的表信息
3,分区表:提升性能(按部门分区)
你可以按某个字段去分区,比如你有张员工表,表里肯定有部门号,按照部门号分区,也就是把属于同一个部门的员工放在一张表里管理,那么在查询的时候就可以只扫描这张表,从而提升效率
4,分桶表:类似hash分区,判断某个字段值的hash是否一样,一样的话分一个桶。
例如:我们还是拿员工表举例,取部门号的hash值,把所有数据的部门hash值一样的数据分在一个桶(桶是以文件形式存在的,区是以目录形式存在的)里面。
5,视图
视图的存在是为了简化复杂的查询,就是将复杂的sql结果保留成视图,下次直接查询视图就可以得到结果。比如你把查询部门号为10的员工保留成视图,下次直接查询视图就可得到结果
原文地址:https://www.cnblogs.com/jackyu888/p/11436189.html
- BZOJ 3097: Hash Killer I【构造题,思维题】
- Python Selenium设计模式-POM
- BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
- HDU 1711 Number Sequence(KMP裸题,板子题,有坑点)
- BZOJ 2222: [Cqoi2006]猜数游戏【神奇的做法,傻逼题,猜结论】
- BZOJ 1257: [CQOI2007]余数之和sum【神奇的做法,思维题】
- 洛谷 P1019 单词接龙【经典DFS,温习搜索】
- MVCforum 支持多国语言
- BZOJ 1012: [JSOI2008]最大数maxnumber【线段树单点更新求最值,单调队列,多解】
- BZOJ 1303: [CQOI2009]中位数图【前缀和】
- 高斯消元模版
- HDU 1728 逃离迷宫(DFS经典题,比赛手残写废题)
- 洛谷 P1219 八皇后【经典DFS,温习搜索】
- KVM基于内核的虚拟机概念理解与客户机浅析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浅谈python下tiff图像的读取和保存方法
- Jmeter(二十五) - 从入门到精通 - JMeter函数 - 下篇(详解教程)
- 解决vscode python print 输出窗口中文乱码的问题
- 对python3新增的byte类型详解
- Python实现的特征提取操作示例
- Linux进程间通信方式之socket使用实例
- python实现图片识别汽车功能
- Mac下Anaconda的安装和使用教程
- linux ubuntu中安装、卸载和删除python-igraph的方法教程
- python实现汽车管理系统
- tp5框架基于ajax实现异步删除图片的方法示例
- Python3 jupyter notebook 服务器搭建过程
- PHP图像处理 imagestring添加图片水印与文字水印操作示例
- CentOS6.9下NFS服务安装配置教程
- Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项