大数据导论-思维、技术与应用-第7章-数据仓库Hive课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《大数据导论-思维、技术与应用-第7章-数据仓库Hive课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 导论 思维 技术 应用 数据仓库 Hive 课件
- 资源描述:
-
1、 大数据导论第七章CONTENTS目录PART 01 数据仓库概述PART 02 数据仓库Hive概述PART 03 Hive和数据库的比较PART 04 Hive的体系架构PART 05 Hive的工作流程PART 06 Hive数据类型PART 07 HiveQL:数据定义与操作PART 08 HiveQL:查询PART 09 Hive模式设计PART 10 作业PART 01 数据仓库概述数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。数据仓库的定义数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。根据数据仓库
2、概念的含义,数据仓库拥有以下四个特点:1.面向主题2.集成的3.相对稳定的4.反映历史变化数据仓库的定义n 面向主题 数据仓库中的数据是按照一定的主题域进行组织。主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。n 集成的 在数据仓库系统中,无论何种数据源,无论是Access、SQL Server、MySQL还是Oracle,甚至是系统访问日志中的数据,都会被统一装入到同一个数据仓库系统。数据仓库的定义n 相对稳定的 数据仓库中的数据,一旦从数据源中存入,便不会再进行任何修改,只会在此基础上进行进一步的分析处理。n 反映历史变化 数据仓
3、库中的数据通常包含历史信息,系统记录了企业从过去某一时点,如开始应用数据仓库的时点,到目前的各个阶段的信息。通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。数据仓库与操作数据库操作数据库称作联机事务处理(OLTP)系统,主要任务执行联机事务处理和查询处理。数据仓库系统即联机分析处理(OLAP),在数据分析和决策支持方面为用户或者机器学习提供服务。二者的主要区别在于五个大的方面:1.用户系统的面向性2.数据内容3.数据库设计4.视图5.访问模式数据仓库与操作数据库p 用户系统的面向性:OLTP是面向客户的,而OLAP是面向市场的;p 数据内容:OLTP主要是面向当前的业务,而OL
4、AP是需要使用历史数据的;p 数据库设计:OLTP是根据实体关系进行设计,而OLAP是面向主题进行设计的;p 视图:OLTP是面向个别具体问题的,而OLAP是要面向整个企业全景的;p 访问模式:OLTP是原子事务操作,而OLAP是只读操作。数据仓库的架构数据仓库的架构主要由四层组成。数据源 数据仓库服务器 OLAP服务器 前端工具数据仓库的架构p 数据源 是数据仓库系统的基础,是整个系统的数据源泉。通常包括企业内部信息和外部信息。p 数据仓库服务器 是整个数据仓库系统的核心。数据仓库的真正关键是数据的存储和管理。p OLAP服务器 对分析需要的数据进行有效集成,按多维模型予以组织,以便进行多角
5、度、多层次的分析,并发现趋势。p 前端工具 主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具,以及各种基于数据仓库或数据集市的应用开发工具。传统数据仓库的问题进入大数据时代,传统架构的数据仓库遇到了非常多的挑战。传统数据仓库有如下几个问题:1.无法满足快速增长的海量数据存储需求2.无法处理不同类型的数据3.传统数据仓库建立在关系型数据仓库之上,计算和处理能力不足4.过去的数据库没有提供搜索和数据挖掘的能力,而这些需求已经是企业的刚需。PART 02 数据仓库Hive概述Hive是基于Hadoop的数据仓库,可对存储在HDFS上的文件中的数据集进行数据整理、特殊查询和分析处理,提供了类
6、似于SQL语言的查询语言HiveQL。数据仓库Hive概述Hive是基于Hadoop的数据仓库,可对存储在HDFS上的文件中的数据集进行数据整理、特殊查询和分析处理,提供了类似于SQL语言的查询语言HiveQL。Hive把HQL语句转换成MapReduce任务后,采用批处理的方式对海量数据进行处理。但Hive不是一个数据库。Hive不支持OLTP(联机事务处理)所需的关键功能,而更接近成为一个OLAP(联机分析)工具。PART 03 Hive和数据库的比较Hive是基于Hadoop平台的数据仓库,与传统的数据库有着根本的差别。Hive与数据库的比较查询语言HQLSQL数据存储位置HDFSRaw
7、 Device 或者 Local FS数据格式用户定义系统决定数据更新不支持支持索引无有执行MapReduceExecutor执行延迟高低可扩展性高低数据规模大小Hive建立在Hadoop的分布式文件系统(HDFS)和MapReduce系统之上。PART 04 Hive的体系架构Hive的体系架构Hive的体系架构Hive体系架构的组件可以分为两大类:p 服务端组件 Driver组件 Metastore组件 Thrift服务p 客户端组件 CLI Thrift客户端 WEB GUIHive的体系架构各组件作用如下:p Driver组件 将用户的HiveQL语句进行解析、编译优化,生成执行计划,
8、然后调用底层的MapReduce计算框架。Hive驱动程序把元数据存储在数据库中。p Metastore组件 存储Hive的元数据。Hive支持把Metastore服务独立出来,安装到远程的服务器集群里,从而解耦Hive 服务和Metastore服务,保证Hive运行的可靠性。Hive的体系架构各组件作用如下:p Thrift服务 用来进行可扩展且跨语言的服务的开发,Hive集成了该服务,能让不同的编程语言调用Hive的接口。p CLI Command Line Interface,命令行接口。架构图的最上面包括一个命令行接口(CLI),可以在Linux终端窗口向Hive驱动程序直接发出查询或
9、管理命令。Hive的体系架构各组件作用如下:p Thrift客户端 Hive架构的许多客户端接口是建立在Thrift客户端之上,包括JDBC和ODBC接口。p WEB GUI客户端提供了通过网页的方式访问Hive所提供的服务。这个接口对应Hive的HWI组件(Hive Web Interface)。Hive的主要工作就是把用户提交的HQL查询转换成MapReduce程序,并提交给Hadoop的MapReduce计算框架执行,最后再把执行结果返回给用户。PART 05 Hive的工作流程Hive的工作流程Hive的工作流程Hive的具体工作流程如下:1.Execute Query:Hive界面如
10、命令行或Web UI将查询发送到Driver(任何数据库驱动程序如JDBC、ODBC等)来执行;2.Get Plan:Driver根据查询编译器解析查询语句(Query),验证查询语句的语法,查询计划或者查询条件;3.Get Metadata:编译器将元数据请求发送给Metastore;4.Send Metadata:Metastore将元数据作为响应发送给编译器;5.Send Plan:编译器检查要求和重新发送Driver的计划。查询的解析和编译完成;Hive的工作流程Hive的具体工作流程如下:6.Execute Plan:Driver将执行计划发送到执行引擎;6.1 Execute Jo
11、b:Hadoop内部执行的是MapReduce工作过程,任务执行引擎发送一个任务到资源管理节点(Job Tracker),资源管理器分配该任务到任务节点(Task Trackers),由任务节点上开始执行MapReduce任务;6.1 Metadata Ops:在执行引擎发送任务的同时,对Hive的元数据进行相应操作;6.2 Job Done:MapReduce任务执行完毕以后,通知执行引擎;Hive的工作流程Hive的具体工作流程如下:7.Fetch Results:执行引擎接收数据节点(Data Node)的结果;8.Send Results:执行引擎发送这些合成值到Driver;9.fe
12、tch Results:Driver将结果发送到Hive接口。Hive支持基本数据类型和复杂类型,基本类型包括数值型,Boolean,字符串,时间戳。复杂类型包括数组,Map、和Struct。PART 06 Hive数据类型基本数据类型Hive的基本数据类型包括:1.整数类型2.小数类型3.文本类型4.Boolean5.二进制6.时间类型基本数据类型n 1.整数类型 Hive有4种带符号的整数类型:TINYINT、SMALLINT、INT、BIGINT,分别对应Java中的byte、short、int、long,字节长度分别为1、2、4、8字节。在使用整数字面量时,默认情况下为INT,如果要声
13、明为其他类型,通过后缀来标识。类型描述后缀示例TINYINT1字节的有符号整数,-128127Y10YSMALLINT 2个字节的有符号整数,-3276832767S10SINT4个字节的带符号整数-10BIGINT8字节带符号整数L10L基本数据类型n 2.小数类型 浮点类型包括FLOAT和DOUBLE两种,分别为32位和64位浮点数。DECIMAL用于表示任意精度的小数,通常在货币当中使用。类型描述示例FLOAT4字节单精度浮点数1.01500.00DOUBLE8字节双精度浮点数750000.00DECIMAL17字节任意精度的带符号小数 DECIMAL(5,2)基本数据类型n 3.文本类
14、型 Hive有3种类型用于存储字文本。STRING存储变长的文本,对长度没有限制。VARCHAR与STRING类似,但是长度上只允许在1-65355之间。CHAR则用固定长度来存储数据。类型描述示例STRING字符串,变长。使用单引号或双引号来指定Welcome to use Hive.VARCHAR变长字符串,最长65355字节 Welcome to use Hive.CHAR固定长度字符串Welcome!基本数据类型n 4.Boolean Boolean表示二元的true或false。n 5.二进制 BINARY用于存储变长的二进制数据。n 6.二进制 TIMESTAMP类型支持传统的UN
15、IX时间戳可选纳秒的精度,支持的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”和格式“YYYY-MM-DD HH:MM:ss.ffffffffff”。DATE类型则表示日期,对应年月日三个部分,格式形式描述为 YYYY-MM-DD。复杂数据类型Hive的基本数据类型包括:1.ARRAY2.MAP3.STRUCT4.UNION复杂数据类型n 1.2.ARRAY和MAP ARRAY和MAP类型对应于Java中的数组和映射表。数组是有序的同类型的集,声明格式为ARRAY,元素访问通过0开始的下标,例如arrays1访问第二个元素。MAP是键值对
16、集合,key必须为基本类型,value可以是任何类型。MAP通过MAP来声明。Map的元素访问则使用,例如mapkey1。复杂数据类型n 3.STRUCT STRUCT则封装一组有名字的字段,其类型可以是任意的基本类型,元素的访问使用点号。例如,如果列Name的类型是STRUCTfirst STRING,last STRING,那么第一个元素可以通过Name.first来访问。n 4.UNION UNION是异类的数据类型的集合。在给定的任何一个时间点,UNION类型可以保存指定数据类型中的任意一种。UNION类型声明语法为UNIONTYPE。HQL的数据定义,用于创建、修改和删除数据库和创建
17、、修改和删除表;HQL的数据操作,用于将数据加载到Hive表中,以及将数据抽取到文件系统中。PART 07 HiveQL:数据定义与操作Hive创建数据库Hive中的数据库本质上就是一个表目录,通过使用数据库来组织表可以避免表名冲突。如果用户在创建表的时候没有显式地指定数据库,那么将会使用默认的数据库default。1.命令格式CREATE DATABASE|SCHEMA IF NOT EXISTS 创建一个名为userdb的数据库:hive CREATE DATABASE IF NOT EXISTS userdb;随时可以通过SHOW命令来查看Hive中所包含的数据库:hive SHOW D
18、ATABASES;default userdbHive创建数据库2.JDBC程序 可以在Java程序里使用JDBC操作Hive,和使用普通JDBC数据库一样。创建数据库的JDBC程序如下:import java.sql.SQLException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.sql.DriverManager;public class HiveCreateDb private static String driverName=org.apach
19、e.hadoop.hive.jdbc.HiveDriver;public static void main(String args)throws SQLException /Register driver and create driver instance Class.forName(driverName);/get connection Connection con=DriverManager.getConnection(jdbc:hive:/localhost:10000/default,);Statement stmt=con.createStatement();stmt.execut
20、eQuery(CREATE DATABASE userdb);System.out.println(Database userdb created successfully.);con.close();Hive删除数据库当不需要的时候,用户可以删除数据库。如果某个数据库被删除了,那么其对应的目录也同时会被删除。1.命令格式DROP DATABASE StatementDROP DATABASE IF EXISTS database_name RESTRICT|CASCADE;删除名为userdb的数据库:hive DROP DATABASE IF EXISTS userdb;Hive删除数据库
21、2.JDBC程序 删除数据库的JDBC程序如下:import java.sql.SQLException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.sql.DriverManager;public class HiveDropDb private static String driverName=org.apache.hadoop.hive.jdbc.HiveDriver;public static void main(String args)throws
22、 SQLException /Register driver and create driver instance Class.forName(driverName);/get connection Connection con=DriverManager.getConnection(jdbc:hive:/localhost:10000/default,);Statement stmt=con.createStatement();stmt.executeQuery(DROP DATABASE userdb);System.out.println(“Drop userdb database su
23、ccessful.”);con.close();Hive创建表Hive的表有内部表和外部表两大类。内部表也称为管理表。Hive会控制内部表数据的生命周期,当删除一个内部表的时候,Hive也会删除这个表中的数据。但是,内部表不方便与其他数据处理系统共享数据。外部表是外部的,所以Hive并不拥有外部表的数据,只是有权使用这些数据。因此,删除外部表的时候,并不会删除这份数据,只是把描述表的元数据删除。Hive创建表1.命令格式CREATE TABLE IF NOT EXISTS db_name.table_name(col_name data_type COMMENT col_comment,.)C
24、OMMENT table_commentROW FORMAT row_formatSTORED AS file_format创建一个名为employee表,表中字段和数据类型如下:Sr.No字段名称数据类型1Eidint2NameString3SalaryString4DesignationstringHive创建表hive CREATE TABLE IF NOT EXISTS employee(eid int,name String,salary String,designation String)COMMENT Employee details ROW FORMAT DELIMITED F
25、IELDS TERMINATED BY t LINES TERMINATED BY n STORED AS TEXTFILE;Hive创建表2.JDBC程序 创建表的JDBC程序如下:import java.sql.SQLException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.sql.DriverManager;public class HiveCreateTable private static String driverName=org.apac
展开阅读全文