栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 数据挖掘与分析

Hive 简介及核心概念

Hive 简介及核心概念

文章目录
  • Hive 简介
  • Hive 架构
    • Metestore 元数据存储
    • Driver 驱动 核心
    • Complier 编译器
  • Hive 数据类型
  • Hive 的默认分隔符
  • Hive 存储格式
  • Hive 内部表与外部表

Hive 简介
  • 建在 Hadoop 之上的数据仓库, 可以将结构化的数据文件映射成表, 并提供类 SQL 查询功能, 用于查询的 SQL 语句会被转化为 MapReduce 作业, 然后提交到 Hadoop 上运行
  • 简单容易上手, 使熟悉 SQL 但不了解 Java 编程的人也能进行大数据分析
  • 本身不存储和处理数据, 依赖 HDFS 存储数据, 依赖 MapReduce 处理数据
  • 离线
Hive 架构

![](https://img-blog.csdnimg.cn/a6daa1d703cb44d8b0c5ea397d37a203.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP5LyZ5peg6ZmQ5biF,size_15,color_FFFFFF,t_70,g_se,x_16)

Metestore 元数据存储
  • 在 Hive 中,表名、表结构、字段名、字段类型、表的分隔符等统一被称为元数据
  • 所有的元数据默认存储在 Hive 内置的 derby 数据库中,但由于 derby 只能有一个实例,也就是说不能有多个命令行客户端同时访问
  • 在实际生产环境中,通常使用 MySQL 代替 derby
Driver 驱动 核心
  • JVM 进程
  • 包括解释器, 优化器, 执行器
  • 负责把 HQL 转化成 MapReduce 作业
  • 是连接 Hive 客户端和 Hadoop 集群的纽带
  • 客户端提交 HQL 给 Driver,
  • Driver 根据 HQL 中的表名去 metastore 查询是否存在
  • metastore 返回存在结果给 Driver
  • Driver 把 HQL 交给 Compiler
  • 编译器把 HQL 解析优化成 MapReduce 任务并返回给 Driver
  • Driver 把 MapReduce 任务发送到 Hadoop 集群执行
  • 任务执行成功后结果返回给 Driver, Driver 再返回给客户端
Complier 编译器
  • 编译器将 HQL 转换为操作符
  • 操作符是 Hive 最小的处理单元
  • 每个操作符代表 HDFS 的一个操作或者一个 MR 任务
Hive 数据类型

  • TIMESTAMP WITH LOCAL TIME ZONE : 用户提交时间交给数据库时, 会被转换成数据库所在的时间来保存; 查询时则按照查询客户端的不同, 转换为查询客户端所在时区的时间
  • TIMESTAMP : 提交什么时间就保存什么时间, 查询时也不做任何转换


示例

CREATE TABLE students(
  name      STRING,   -- 姓名
  age       INT,      -- 年龄
  subject   ARRAY,   --学科
  score     MAP,  --各个学科考试成绩
  address   STRUCT  --家庭居住地址
) ROW FORMAT DELIMITED 
FIELDS TERMINATED BY "t";
Hive 的默认分隔符
  • 当数据存储在文本文件中, 必须按照一定格式区别行和列
  • Hive 默认使用了几个平时很少出现的字符, 这些字符一般不会作为内容出现在文件中

    使用示例:
CREATE TABLE page_view(viewTime INT, userid BIGINT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '01'
COLLECTION ITEMS TERMINATED BY '02'
MAP KEYS TERMINATED BY '03';
Hive 存储格式

  • 生产环境大多使用 Parquet 格式

使用示例:

CREATE TABLE page_view(viewTime INT, userid BIGINT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '01'
COLLECTION ITEMS TERMINATED BY '02'
MAP KEYS TERMINATED BY '03'
STORED AS SEQUENCEFILE;
Hive 内部表与外部表
  • 创建表时不做任何指定, 默认的就是内部表
  • 想要创建外部表, 需要使用 External进行修饰

  • 由于外部表不会管理真正存储数据的 HDFS 目录, 所以可以把插入数据推迟到创建表之后进行
  • 生产环境中, 多使用 Hive 外部表机制, Spark、Flink 等将数据写入 HDFS 固定目录中, Hive 对该目录建立外部表, 提供数据仓库服务
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/278838.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号