欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hive知识点总结(持续更新)

程序员文章站 2022-05-28 20:13:21
...

hive 基本概念

hive的意义

    hive是一个数据仓库工具,把结构化数据映射成表 支持类sql
    hive就是把hql转换为MapReduce 降低了我们学习成本
    hive存储依赖于hdfs   执行程序运行在yarn上

hive优缺点

优点
简单 容易上手
降低了我们学习成本(不用去写MR)
支持自定义函数 扩展性高
支持大量数据
缺点
因为底层是MR,所以效率比较低
HQL表达能力有限
延迟高 适用于离线业务

hive的架构原理

Hive知识点总结(持续更新)

hive和数据库比较

数据存储位置
Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。
数据库则可以将数据保存在块设备或者本地文件系统中
数据更新
由于Hive是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive中不建议对数据的改写,所有的数据都是在加载的时候确定好的。
而数据库中的数据通常是需要经常进行修改的
执行
Hive中大多数查询的执行是通过 Hadoop 提供的 MapReduce 来实现的。
而数据库通常有自己的执行引擎。
数据规模
由于Hive建立在集群上并可以利用MapReduce进行并行计算,因此可以支持很大规模的数据;
数据库可以支持的数据规模较小。

hive的数据类型

基本数据类型

hive 的类型 java的类型
TINYINT byte
SMALINT short
INT int
BIGINT long
BOOLEAN boolean
FLOAT float
DOUBLE double
STRING string
TIMESTAMP 时间类型
BINARY 字节数组

集合数据类型

STRUCT
MAP
ARRAY

hive的表

内部表

  1. 默认创建的表内部表 create table xxx
  2. Hive默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir(默认位置*/user/hive/warehouse*)。
  3. 导入数据的时候是将文件剪切(移动)到指定位置,即原有路径下文件不再存在
  4. 删除表的时候,数据和元数据都将被删除
  5. 当我们删除一个内部表时,Hive也会删除这个表中数据。管理表不适合和其他工具共享数据。

外部表

  1. 创建外部表命令添加一个external即可 create external table xxx
  2. 因为表是外部表,所以Hive并非认为其完全拥有这份数据。删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。
  3. 外部表导入文件时不移动文件,仅仅是添加一个metadata

内部表外部表的转换

alter table 表名 set tb lproperties(‘EXTERNAL’=‘TRUE’); ----转换为外部表
alter table 表名 set tblproperties(‘EXTERNAL’=‘FALSE’); ----- 转换为内部表

分区表

其意义主要在于优化查询,对于分区表,我们一般都要求使用分区字段进行过滤,以加快查询速度
分区关键字partitioned by ()
适用于对某个东西进行分区 如对时间分区

分桶表

分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。
对于hive中每一个表、分区都可以进一步进行分桶。
由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。

分桶前需要先
set hive.enforce.bucketing=true;
开启分桶

分桶关键字clustered by() (分桶个数和reduce task个数一致。)
适用于数据抽样

数据加载

(1)load data:表示加载数据
(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表
(3)inpath:表示加载数据的路径
(4)overwrite:表示覆盖表中已有数据,否则表示追加
(5)into table:表示加载到哪张表
(6)student:表示具体的表
(7)partition:表示上传到指定分区

hive文件格式

TextFile格式
Orc格式
Parquet格式

ORC > Parquet > textFile
存储文件的查询速度测试:

相关标签: HIVE