文章目录

  • 3.1 导读
  • 3.2 Hive概述
    • 1. **Hive特性与应用场景:**
    • 2. Hive 与传统数据仓库比较
    • 3. Hive 的优点
  • 3.3 Hive的架构与功能
    • 1. Hive的架构
    • 2. Hive 运行流程
    • 3. Hive 数据存储模型
      • **分区与分桶**
      • 托管表与外部表
    • 4. Hive 支持的函数
  • 3.4 Hive 基本操作
    • 1. 运行Hive服务
    • 2. Hive SQL
      • DDL
      • DML
      • DQL
  • 3.5 课后习题

3.1 导读

能够通过写SQL语句就可以进行大数据的统计分析?

通过HQL(类似SQL)的语句可以实现

Hive中写HQL语句最终转换成了什么程序?

MapReduce

Hive提供了哪些客户端接口供用户使用?

Hive CLI(Hive Command Line,Hive命令行),客户端可以直接在命令行模式下进行操作。
HWI(Hive Web Interface,Hive Web接口),Hive提供了更直观的Web界面。
Hiveserver,Hive提供了Thrift服务,Thrift客户端目前支持C++/Java/PHP/Python/Ruby。

3.2 Hive概述

Apache Hive是基于Hadoop的数据仓库软件,可以查询和管理PB级别的分布式数据。数据仓库软件使用SQL读取、写入和管理分布式存储中的大型数据集。可以将表结构投影到已经存储的数据上。提供了命令行工具和DBC驱动程序以将用户连接到Hive。

1. Hive特性与应用场景:

  • 灵活方便的ETL (extract/transform/load)。
  • 支持Tez, Spark等多种计算引擎。
  • 可直接访问HDFS文件以及HBase。
  • 易用易编程。

  • Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。
  • Hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。因此,Hive 并不适合那些需要低延迟的应用,例如联机事务处理(OLTP)。
  • Hive 并非为联机事务处理而设计,Hive 并不提供实时的查询和基于行级的数据更新操作。 Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。

2. Hive 与传统数据仓库比较

3. Hive 的优点

  • HiveServer Hive:对外提供SQL服务的主要进程。
  • MetaStore Hive:提供元数据信息的进程,可供HiveServer,SparkSQL,Oozie等组件调用。
  • Beeline hive:的命令行客户端。
  • JDBC java:统一数据库接口。
  • Thrift:一种序列化、通信协议。
  • ODBC:基于C/C++的数据库标准接口。

Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。

3.3 Hive的架构与功能

1. Hive的架构

  • MetaStore : 存储表、列和Partition等元数据,通常采用MySQL存储。
  • Driver : 对上层提交的HQL编译,优化执行序列并执行。管理HiveQL执行的生命周期,并贯穿Hive任务整个执行期间。
    • Compiler : 编译HiveQL并将其转化为一系列相互依赖的Map/Reduce任务。
    • Optimizer : 优化器,分为逻辑优化器和物理优化器,分别对HiveQL生成的执行计划和 MapReduce任务进行优化。
    • Executor : 按照任务的依赖关系分别执行Map/Reduce任务。
  • ThriftServer : 提供thrift接口,作为JDBC和ODBC的服务端,并将Hive和其他应用程序集成起来。
  • Clients : 包含命令行接口Beeline 和JDBC/ODBC 接口,为用户访问提供接口。
  • Hive的语句最终在Tez、MapReduce、Spark上执行

2. Hive 运行流程

3. Hive 数据存储模型

  • 数据库:创建表时如果不指定数据库,则默认为default数据库。
  • 表:物理概念,实际对应HDFS上的一个目录
  • 分区:对应所在表所在目录下的一个子目录
  • 桶:对应表或分区所在路径的一个文件
  • 倾斜数据:数据集中于个别字段值的场景,比如按照城市分区时,80%的数据都来自某个 大城市。
  • 正常数据:不存在倾斜的数据。

分区与分桶

对于每一个表或者是分区,Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。

  • 分区:数据表可以按照某个字段的值划分分区

    • 每个分区是一个目录。
    • 分区数量不固定。
    • 分区下可再有分区或者桶
  • 桶:数据可以根据桶的方式将不同数据放入不同的桶中。
    • 每个桶是一个文件
    • 建表时指定桶个数桶内可排序
    • 数据按照某个字段的值Hash后放入某个桶中。
  • 当表格数据量较大时,可对表格进行分区处理(Partition),便于局部数据的查询操作,如按时间分区、按地域分区,将具有相同性质的数据存储到同一磁盘块上,从而加快查询效率。
  • Hive是针对某一列进行分桶。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶中。分桶的好处是可以获得更高的查询处理效率,使取样更高效。

托管表与外部表

Hive可以创建托管表和外部表:

  • Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所 在的路径, 不对数据的位置做任何改变。(外部表为指针)
  • 在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
  • 如果所有处理都由Hive完成,建议使用托管表。
  • 如果要用Hive和其它工具来处理同一个数据集,建议使用外部表

4. Hive 支持的函数

Hive内置函数:

  • 数学函数:如四舍五入round( )、向下取整floor( )、绝对值abs( )、随机函数rand( ) 等
  • 日期函数:如返回日期to-date( )、返回月month( )、返回天day( ) 等
  • 字符串函数:如trim( )、length( )、substr( ) 等

如果内置函数不能满足用户需求时,Hive可支持自定义函数。

3.4 Hive 基本操作

1. 运行Hive服务

2. Hive SQL

  • DDL - 数据定义语言

    • 建表、修改表、删表、分区、数据类型。
  • DML - 数据管理语言
    • 数据导入、数据导出。
  • DQL - 数据查询语言
    • 简单查询。
    • 复杂查询Group by、Order by、Join等。

DDL

DDL即数据定义语言,DDL操作都是对元数据的操作。主要包含如下操作:

  • Create/Drop/Alter Database;
  • Create/Drop/Truncate Table;
  • Alter Table/Partition/Column;
  • Create/Drop/Alter View;
  • Create/Drop Index;
  • Create/Drop Function;
  • Show;
  • Describe。

DML

DQL

3.5 课后习题

思考题:

  1. Hive的使用场景有哪些?

    数据挖掘(用户行为分析,兴趣分析,区域展示)

    数据汇总(每天/每周用户点击数,点击排行)

    非实时分析(日志分析,统计分析)

  2. 以下关于Hive SQL基本操作描述正确的是?

    A. 创建外部表使用external关键字,创建普通表需要指定internal关键字

    创建普通表不需要指定internal关键字

    B. 创建外部表必须要指定location信息

    不是必须的

    C. 加载数据到Hive时源数据必须是HDFS的一个路径

    可以是本地也可以是HDFS加local是从本地复制过去,不加local是从HDFS上剪切过去

    D. 创建表时可以指定列分隔符

3. Hive分布式数据仓库【华为HCIA-BigData】相关推荐

  1. Hive分布式集群部署

    Hive编程,可以使开发者不需要考虑底层MapReduce算法如何实现,而只需集中精力关注SQL语句的编写即可. Apache Hive 是建立在Hadoop上的数据仓库,它提供了一系列工具,可以用来 ...

  2. 数据产品设计专题(5)- 分布式数据仓库技术架构

    一.分布式数据仓库技术架构 二.核心内容解读 (1)分布式数据仓库存储技术:hive+hdfs: (2)事实计算平台技术框架:spark: (3)数据挖掘算法技术框架:mllib + sparkR

  3. hive olap 数据仓库_数据仓库系统的实现和使用(含OLAP重点讲解)

    前言 完整的数据仓库系统会涉及其他一些组件的开发,其中最主要的是ETL工程,在线分析处理工具(OLAP)和商务智能(BI)应用等. 本文将对这些方面做一个总体性的介绍(尤其是OLAP),旨在让读者对数 ...

  4. 【华为云技术分享】大数据容器化成趋势,华为云BigData Pro一马当先

    大数据的需求热度,从来都是这个时代的浪尖.然而由于大数据系统的复杂性,一度导致业界大数据已死的各种声音不断.尤其是当MapR被HPE收购,Cloudera公司股票持续跌成狗,使得这种声音进一步放大. ...

  5. TDW开源:腾讯的分布式数据仓库

    腾讯分布式数据仓库 ( Tencent distributed Data Warehouse,简称TDW) 是腾讯基于开源软件研发的大数据处理平台,它基于Hadoop.Hive.PostgreSQL之 ...

  6. 大规模Hadoop集群实践:腾讯分布式数据仓库(TDW)

    TDW 是腾讯最大的离线数据处理平台.本文主要从需求.挑战.方案和未来计划等方面,介绍了TDW在建设单个大规模集群中采取的 JobTracker 分散化和 NameNode 高可用两个优化方案. TD ...

  7. 分布式数据仓库最佳实践 - 码字小能手招募

    一.前言 很久以来,一直想写这么一本书,把自己的过往进行总结,这次再没有拖延下去的理由.同时也希望能有有经验和兴趣的,做数据仓库的兄弟们能帮我一起来完成这部分内容,本文算是招募. 二.须知 无名:无新 ...

  8. 《一张图看懂华为云BigData Pro鲲鹏大数据解决方案》

    8月27日,华为云重磅发布了业界首个鲲鹏大数据解决方案--BigData Pro.该方案采用基于公有云的存储与计算分离架构,以可无限弹性扩容的鲲鹏算力作为计算资源,以支持原生多协议的OBS对象存储服务 ...

  9. pap认证要交换几次报文_华为HCIA认证RS路由与交换 —— 链路状态协议OSPF PPP原理与配置方法详解...

    本文讲述了华为HCIA认证R&S路由与交换 -- 链路状态协议OSPF & PPP原理与配置方法.分享给大家供大家参考,具体如下: 文章目录 链路状态路由协议--OSPF 开放式最短路 ...

最新文章

  1. Servlet和JSP规范及版本对应关系
  2. java影院购票系统开题报告,开题报告-网上电影院购票系统的设计与实现.doc
  3. 开启Mysql远程登录账号
  4. Linux多线程工作笔记0004---C语言中g++ -o -c -g 功能
  5. 用100多行python代码开发java代码生成器
  6. C语言实现方程组LU分解法和列主元LU分解法
  7. Docker部署应用案例
  8. [闲聊篇]这个世界所谓的28定律
  9. 计算机显示器画画的清晰度,如何设置显示器分辨率让画面更清晰
  10. 资源屋分享两款导航网站源码 支持自动收录、自动审核、自动检测友链功能
  11. Linux开机启动过程-centos7
  12. 生活记录:其实超度的是活着的人
  13. creator 微信小游戏存取数据
  14. java 电话号码 打号_java电话号码怎么匹配?
  15. 数据库审计系统在加密传输场景下的应用-SinoDB
  16. 用php的定界符EOT需要留个心眼
  17. GO --微服务框架(一) goa
  18. 在线随机图片API收集(欢迎投稿)
  19. ipguard加密文件损坏后如何恢复
  20. html动态改变文字大小,适配移动端大小

热门文章

  1. 数据挖掘:降低汽油精制过程中的辛烷值损失模型(二)
  2. C# 语言的高级应用
  3. 模型部署到移动端_分分钟打开倾斜摄影模型,新版本的老子云移动端也太好用了吧!...
  4. 裸眼3D大屏首秀!变形金刚登陆成都太古里;包装巨头安姆科计划在中国江阴建新工厂 | 美通社头条...
  5. 云效上线“云中谁寄锦书来”云端专属密码情书
  6. PPT演示文稿制作技巧
  7. 是什么在影响我的工作效率
  8. php知识库管理系统,开源知识库管理系统
  9. 「镁客·请讲」慧川智能康洪文:打造一个“AI+视频云平台”的中央厨房
  10. 二进制转十六进制vb6程序