一、概念

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抓取)、执行计划的更多相关文章

  1. Hive 实战(2)--hive分区分桶实战

    前言: 互联网应用, 当Mysql单机遇到性能瓶颈时, 往往采用的优化策略是分库分表. 由于互联网应用普遍的弱事务性, 这种优化效果非常的显著.而Hive作为数据仓库, 当数据量达到一定数量时, 查询 ...

  2. Hive数据据类型 DDL DML

    Hive的基本数据类型 DDL DML: 基本数据类型 对于Hive而言String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以 ...

  3. 第4节 hive调优:1、2、fetch抓取和表的优化

    hive的调优:第一个调优:fetch抓取,能够避免使用mr的,就尽量不要用mr,因为mr太慢了 set hive.fetch.task.conversion=more 表示我们的全局查找,字段查找, ...

  4. 大数据入门第十一天——hive详解(二)基本操作与分区分桶

    一.基本操作 1.DDL 官网的DDL语法教程:点击查看 建表语句 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data ...

  5. MySql用statement实现DDL,DML,DQL的操作Demo

    Demo1 Connection connection=null; Statement stmt=null; int result=-1; try { Class.forName("com. ...

  6. Hibernate修改操作 删除操作 查询操作 增加操作 增删改查 Hibernate增删查改语句

    我用的数据库是MySQL,实体类叫User public class User { private Integer uid; private String username; private Stri ...

  7. hive分区分桶

    目录 1.分区 1.1.静态分区 1.1.1.一个分区 1.1.2.多个分区 1.2.动态分区 2.分桶 1.分区 如果一个表中数据很多,我们查询时就很慢,耗费大量时间,如果要查询其中部分数据该怎么办 ...

  8. Hive调优

    Hive存储格式选择 和Hive 相关优化: 压缩参考 Hive支持的存储数的格式主要有:TEXTFILE .SEQUENCEFILE.ORC.PARQUET. 文件存储格式 列式存储和行式存储 行存 ...

  9. 【Hive六】Hive调优小结

    Hive调优 Hive调优 Fetch抓取 本地模式 表的优化 小表.大表Join 大表Join大表 MapJoin Group By Count(Distinct) 去重统计 行列过滤 动态分区调整 ...

  10. Hive(八)Hive的Shell操作与压缩存储

    一.Hive的命令行 1.Hive支持的一些命令 Command Description quit Use quit or exit to leave the interactive shell. s ...

随机推荐

  1. Kibana:运用索引模式的 formatter 来探索 IP 信息

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/107484674

  2. 使用tomcat部署java的war包操作

    修改tomcat配置文件server.xml 修改端口号,别跟其他已经被使用的端口号起冲突 修改项目所在路径 <?xml version="1.0" encoding=&qu ...

  3. frps服务端与nginx可共用443端口

    转载自: https://www.ioiox.com/archives/78.html frps服务器上的nginx frps.ini配置 由于nginx占用80/443端口,frps.ini中的 v ...

  4. rpm,docker,k8s三种方式安装部署GitLab服务

    rpm方式 源地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ wget https://mirrors.tuna.tsinghua ...

  5. C++ 自学笔记 对象的初始化

    数组的初始化: 在 C++中  struct ≈ Class:struct里面可以有函数. 默认构造函数: 没有参数的构造函数就是默认构造函数

  6. Python(二)常用的正则表达式

    表单字段验证常用正则表达式 1.姓名 /^[\u4e00-\u9fa5]{2,4}$/ //2-41 2.手机号码 /^(13[0-9]|14[01456879]|15[0-35-9] 3.座机号码 ...

  7. POJ1681 Painter's Problem(高斯消元)

    题目看似与线性方程组无关,但可以通过建模转化为线性方程组的问题. 对于一块砖,刷两次是没有必要的,我们令x=1表示刷了一次,x=0没有刷,一共有n*n个,所以相当于有n*n个未知量x. 定义aij表示 ...

  8. Docker容器技术基础

    Docker基础 目录 Docker基础 容器(Container) 传统虚拟化与容器的区别 Linux容器技术 Linux Namespaces CGroups LXC docker基本概念 doc ...

  9. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  10. 为了讲明白继承和super、this关键字,群主发了20块钱群红包

    摘要:以群主发红包为例,带你深入了解继承和super.this关键字. 本文分享自华为云社区<群主发红包带你深入了解继承和super.this关键字>,作者:共饮一杯无 . 需求 群主发随 ...