【Hive】概念、安装、数据类型、DDL、DML操作、查询操作、函数、压缩存储、分区分桶、实战Top-N、调优(fetch抓取)、执行计划
一、概念
1、介绍
基于Hadoop的数据仓库工具,将结构化数据映射为一张表,可以通过类SQL方式查询
本质:将HQL转换成MapReduce程序

Hive中具有HQL对应的MapReduce模板
存在:HDFS,分析的底层是MapReduce,程序运行在yarn上
2、优缺点
HQL快速开发、适用于数据分析等实时性不高的场景、支持自定义函数、擅长大数据
表达能力有限、效率低、延迟性高
3、架构原理

驱动器:解析器(SQL转为抽象语法树)、编译器(生成逻辑执行计划)、优化器、执行器(逻辑转为物理)
4、和数据库比较
数据更新(数据仓库)、执行延迟(无索引+MR的高延迟)、数据规模
二、Hive安装
1、Hive安装
https://cwiki.apache.org/confluence/display/Hive/GettingStarted
2、MySQL的安装与配置
3、Hive安装部署:配置环境变量
4、元数据配置到MySQL:
拷贝MySQL驱动、配置Metastore到MySQL
5、安装Hive的Tez引擎
将多个有依赖的作业转换为一个作业,只需写一次HDFS,提高计算性能
6、启动Hive
初始化元数据库
启动metastore和hiveserver2
HiveJDBC访问
7、其他命令操作
退出、查看hdfs文件系统、查看输入的历史命令
8、常见属性配置
运行日志信息配置
参数配置(配置文件hive-site.xml、命令行参数bin/hive -hiveconf、参数声明SET)
三、Hive数据类型
1、基本数据类型
TINYINT
SMALINT
INT
BIGINT
BOOLEAN
FLOAT
DOUBLE
STRING
TIMESTAMP
BINARY--字节数组
2、集合数据类型
STRUCT--结构体,用.访问
MAP
ARRAY

3、类型转换
隐式类型转换、CAST('1' AS INT)显式类型转换
四、DDL数据定义
1、创建数据库,可以指定位置
create database db_hive2 location '/db_hive2.db';
2、查询数据库
显示、查看数据库及详情、切换当前数据库
3、修改数据库
属性、位置等
4、删除数据库
空数据库/cascade强制删除
5、创建表
(2)EXTERNAL关键字可以让用户创建一个外部表,在建表的同时可以指定一个指向实际数据的路径(LOCATION),在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
(3)COMMENT:为表和列添加注释。
(4)PARTITIONED BY创建分区表
(5)CLUSTERED BY创建分桶表
5.1默认创建管理表(内部表),数据存储在hive.metastore.warehouse.dir
根据结果创建表:create table if not exists student3 as select id, name from student;
根据表结构创建表:create table if not exists student4 like student;
查询表的类型: desc formatted student2;
5.2 外部表
收集到的网站日志定期流入HDFS文本文件。在外部表(原始日志表)的基础上做大量的统计分析,用到的中间表、结果表使用内部表存储
上传数据:dfs -put /opt/module/datas/student.txt /student;
建表语句+location '/student';
5.3 相互转换
alter table student2 set tblproperties('EXTERNAL'='TRUE');
6、修改表
增删改分区、增删改列信息
7、删除表
drop table dept_partition;
五、DML数据操作
1、数据导入
表中装载数据、通过查询语句插入数据、创建表及加载数据
通过Location指定加载数据路径
Import数据到指定Hive表中
2、数据导出
导出到本地/hdfs
Hive Shell 命令导出:bin/hive -e
导出到HDFS
Sqoop导出
清空数据truncate
六、查询
1、操作
limit限制行数
RLIKE子句使用正则表达式匹配条件
select * from emp where sal RLIKE '[2]';
2、分组
3、join语句
4、排序
分区排序(Distribute By)
Cluster By
5、抽样查询
select * from stu_buck tablesample(bucket 1 out of 4 on id);
七、函数
1、系统内置函数
显示用法:desc function upper;
2、常用内置函数
行转列concat、列转行EXPLODE
空字段赋值NVL( value,default_value)
case sex when '男' then 1 else 0 end
窗口函数(开窗函数):sum累加
RANK排序
日期函数:select current_date();
3、自定义函数UDF:user-defined function
一进一出
一进多出
多进一出
4、自定义UDF函数
上传jar包,执行调用
create temporary function mylower as "com.atguigu.hive.Lower";
八、压缩存储
1、压缩配置
方式、参数配置
2、Map输出阶段压缩(MR引擎)
set mapreduce.map.output.compress=true;
也可以设置压缩方式
3、开启Reduce输出阶段压缩
set hive.exec.compress.output=true;
4、文件存储格式
列式存储和行式存储
TextFile默认不压缩
Orc
Parquet二进制存储,文件是自解析的
5、存储和压缩结合
建表时压缩stored as orc
hive表的数据存储格式一般选择:orc或parquet。压缩方式一般选择snappy,lzo。
九、Hive实战
1、统计各种TopN指标
十、分区表和分桶表
1、分区表
分区就是分目录
CRUD分区
二级分区表的数据加载和查询
动态分区调整
2、分桶表
决定数据放入哪个桶
对分桶字段的值进行哈希,然后除以桶的个数求余
十一、企业调优
1、Fetch抓取
set hive.fetch.task.conversion=more;
不必使用MapReduce计算
2、表的优化
数据量小的表放在join的左边
合理设置MR数量
3、JVM重用
4、查看执行计划
explain extended select * from emp;
【Hive】概念、安装、数据类型、DDL、DML操作、查询操作、函数、压缩存储、分区分桶、实战Top-N、调优(fetch抓取)、执行计划的更多相关文章
- Hive 实战(2)--hive分区分桶实战
前言: 互联网应用, 当Mysql单机遇到性能瓶颈时, 往往采用的优化策略是分库分表. 由于互联网应用普遍的弱事务性, 这种优化效果非常的显著.而Hive作为数据仓库, 当数据量达到一定数量时, 查询 ...
- Hive数据据类型 DDL DML
Hive的基本数据类型 DDL DML: 基本数据类型 对于Hive而言String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以 ...
- 第4节 hive调优:1、2、fetch抓取和表的优化
hive的调优:第一个调优:fetch抓取,能够避免使用mr的,就尽量不要用mr,因为mr太慢了 set hive.fetch.task.conversion=more 表示我们的全局查找,字段查找, ...
- 大数据入门第十一天——hive详解(二)基本操作与分区分桶
一.基本操作 1.DDL 官网的DDL语法教程:点击查看 建表语句 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data ...
- MySql用statement实现DDL,DML,DQL的操作Demo
Demo1 Connection connection=null; Statement stmt=null; int result=-1; try { Class.forName("com. ...
- Hibernate修改操作 删除操作 查询操作 增加操作 增删改查 Hibernate增删查改语句
我用的数据库是MySQL,实体类叫User public class User { private Integer uid; private String username; private Stri ...
- hive分区分桶
目录 1.分区 1.1.静态分区 1.1.1.一个分区 1.1.2.多个分区 1.2.动态分区 2.分桶 1.分区 如果一个表中数据很多,我们查询时就很慢,耗费大量时间,如果要查询其中部分数据该怎么办 ...
- Hive调优
Hive存储格式选择 和Hive 相关优化: 压缩参考 Hive支持的存储数的格式主要有:TEXTFILE .SEQUENCEFILE.ORC.PARQUET. 文件存储格式 列式存储和行式存储 行存 ...
- 【Hive六】Hive调优小结
Hive调优 Hive调优 Fetch抓取 本地模式 表的优化 小表.大表Join 大表Join大表 MapJoin Group By Count(Distinct) 去重统计 行列过滤 动态分区调整 ...
- Hive(八)Hive的Shell操作与压缩存储
一.Hive的命令行 1.Hive支持的一些命令 Command Description quit Use quit or exit to leave the interactive shell. s ...
随机推荐
- 重要参考文档---MySQL 8.0.29 使用yum方式安装,开启navicat远程连接,搭建主从,读写分离(需要使用到ProxySQL,此文不讲述这个)
yum方式安装 echo "删除系统默认或之前可能安装的其他版本的 mysql" for i in $(rpm -qa|grep mysql);do rpm -e $i --nod ...
- 给 SSH 启用二次身份验证
转载自:https://mp.weixin.qq.com/s/ssuhFbfaHxxzGmLg6Y2MjA 目前来说,二次验证(这里就不做过多解释了)是比较常用的安全手段,通过设置二次验证(谷歌或其他 ...
- Java删除word合并单元格时的重复值
Spire.Doc提供了Table.applyVerticalMerge()方法来垂直合并word文档里面的表格单元格,Table.applyHorizontalMerge()方法来水平合并表格单元格 ...
- Java之POI导出Excel(二):多个sheet
相信在大部分的web项目中都会有导出导入Excel的需求,之前我也写过一篇导出单个sheet工作表的文章,没看过的小伙伴可以去看哈,链接也给大家放出来了:导出单个sheet 但是在我们日常的工作中,需 ...
- GCN的原理及其代码实现
图数据的特征性质 图像数据是一种特殊的图数据,图像数据是标准的2D网格结构图数据.图像数据的CNN卷积神经网络算法不能直接用在图数据上,原因是图数据具有以下特殊性. 节点分布不均匀:图像数据及网格数据 ...
- MQ系列6:消息的消费
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 在之前 ...
- 【编程学习】MATLAB
目录 一.MATLAB基础 1. 学会完成MATLAB的安装与启动 1.1 软件包下载 1.2 安装步骤 2. 矩阵的基本操作与运算 2.1 矩阵的简单输入与操作 2.2 矩阵的基本运算 2.2.1 ...
- Spring的同一个服务为什么会加载多次?
问题现象 最近在本地调试公司的一个Web项目时,无意中发现日志中出现了两次同一个服务的init记录,项目都是基于Spring来搭建的,按理说服务都是单例的,应该只有一次服务加载日志才对,本着对工作认真 ...
- Mysql知识点整理
索引相关 abcd联合索引搜索ba会走索引么 会,重排 索引的底层实现是B+树,为何不采用红黑树,B树? (1):B+Tree非叶子节点只存储键值信息,降低B+Tree的高度,所有叶子节点之间都有一个 ...
- 20_Vue如何监测数组类型数据发生改变的?
通过上一节,我们知道了vue检测对象数据发生改变的原理 但是还有个api我们没有讲解,Vue.set(): 这个API比较适合在理解了对象检测的原理后进行讲解 案例准备 html <!-- 创建 ...