Hive初体验(hello hive)

什么是Hive

Hive:由Facebook开源用于解决海量结构化日志的数据统计。

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

本质是:将HQL转化成MapReduce程序

  1. Hive处理的数据存储在HDFS
  2. Hive分析数据底层的实现是MapReduce
  3. 执行程序运行在Yarn上

Hive的优缺点

优点

  1. 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。

  2. 避免了去写MapReduce,减少开发人员的学习成本。

  3. Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。

  4. Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

  5. Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

缺点

1.Hive的HQL表达能力有限

(1)迭代式算法无法表达

(2)数据挖掘方面不擅长

2.Hive的效率比较低

(1)Hive自动生成的MapReduce作业,通常情况下不够智能化

(2)Hive调优比较困难,粒度较粗

Hive架构原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-on8dTpdT-1595483794182)(…/…/…/…/Pictures/Typora/clip_image002.png)]

  1. 用户接口:Client
    CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)

  2. 元数据:Metastore
    元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
    默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore

  3. Hadoop
    使用HDFS进行存储,使用MapReduce进行计算。

  4. 驱动器:Driver

    1. 解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。
    2. 编译器(Physical Plan):将AST编译生成逻辑执行计划。
    3. 优化器(Query Optimizer):对逻辑执行计划进行优化。
    4. 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CmQRasEk-1595483794183)(…/…/…/…/Pictures/Typora/clip_image002-1594110789219.png)]

Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。

Interface-命令窗口模式:

  • 两种工具:beeline 和 Hive命令行(CLI)
  • 两种模式:命令行模式和交互模式

Hive-数据类型

###原始数据类型

类型 示例 类型 示例
TINYINT 10Y SMALLINT 10S
INT 10 BIGINT 100L
FLOAT 1.342 DOUBLE 1.234
DECIMAL 3.14 BINARY 1010
BOOLEAN TRUE STRING ’Book’ or “Book”
CHAR 'YES’ or “YES” VARCHAR 'Book’ or “Book”
DATE '2013-01-31’ TIMESTAMP '2013-01-31 00:13:00.345’

复杂数据类型

类型 格式 定义 示例
ARRAY [‘Apple’,’Orange’,’Mongo’] ARRAY a[0] = ‘Apple’
MAP {‘A’:’Apple’,’O’:’Orange’} MAP<string, string> b[‘A’] = ‘Apple’
STRUCT {‘Apple’, 2} STRUCT<fruit:string, weight:int> c.weight = 2
  • ARRAY:存储的数据为相同类型
  • MAP:具有相同类型的键值对
  • STRUCT:封装了一组字段

Hive元数据结构

数据结构 描述 逻辑关系 物理存储(HDFS)
Database 数据库 表的集合 文件夹
Table 行数据的集合 文件夹
Partition 分区 用于分割数据 文件夹
Buckets 分桶 用于分布数据 文件
Row</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值