Hive入门基础知识课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Hive入门基础知识课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hive 入门 基础知识 课件
- 资源描述:
-
1、Hive入门基础知识一、Hive简介二、Hive体系结构三、Hive工作机制四、Hive应用场景五、Hive安装部署六、Hive开发使用Hive简介-Hive是什么?Hive简介-Hive的历史由来Hive是Facebook开发的,构建于Hadoop集群之上的数据仓库应用。2008年FHive简介-Hive的历史由来Hadoop和Hive组建成为Facebook数据仓库的发展史随着数据量增加某些查询需要几个小时甚至几天才能完成。当数据达到1T时,MySql进程跨掉。可以支撑几个T的数据,但每天收集用户点击流数据(每天约400G)时,Oracle开始撑不住。有效解决了大规模数据的存储与统计分析的
2、问题,但是MapReduce程序对于普通分析人员的使用过于复杂和繁琐。对外提供了类似于SQL语法的HQL语句数据接口,自动将HQL语句编译转化为MR作业后在Hadoop上执行。降低了分析人员使用Hadoop进行数据分析的难度。Hive体系结构-Hive在Hadoop中的位置Avro(序列化)Zookeeper(协调服务)Pig(数据流)SqoopHive(SQL)MapReduce(分布式计算框架)Hbase(列存储)HCatalog(元数据)HDFS(Hadoop分布式文件系统)程序语言计算表存储对象存储Hive体系结构-Hive设计特征 Hive 做为Hadoop 的数据仓库处理工具,它所
3、有的数据都存储在Hadoop 兼容的文件系统中。Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。Hive 的设计特点如下。支持索引,加快数据查询。不同的存储类型,例如,纯文本文件、HBase 中的文件。将元数据保存在关系数据库中,减少了在查询中执行语义检查时间。可以直接使用存储在Hadoop 文件系统中的数据。内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。类SQL 的查询方式,将SQL 查询转
4、换为MapReduce 的job 在Hadoop集群上执行。编码跟Hadoop同样使用UTF-8字符集。Hive体系结构Hive体系结构解析器编译器:完成 HQL 语句从词法分析、语法分析、编译、优化以及执行计划的生成。优化器是一个演化组件,当前它的规则是:列修剪,谓词下压。执行器会顺序执行所有的Job。如果Task链不存在依赖关系,可以采用并发执行的方式执行Job。元数据库Hive的数据由两部分组成:数据文件和元数据。元数据用于存放Hive库的基础信息,它存储在关系数据库中,如 mysql、derby。元数据包括:数据库信息、表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等。Ha
5、doopHive 的数据文件存储在 HDFS 中,大部分的查询由 MapReduce 完成。(对于包含*的查询,比如 select*from tbl 不会生成 MapRedcue 作业)HadoopHive的运行机制hivesqlMap/Reduce 用户用户接口Hive编译器的运行机制(Hive的核心)语义解析器语义解析器将查询字符串转换成解析树表达式。语法解析器语法解析器将解析树转换成基于语句块的内部查询表达式。逻辑计逻辑计划划 生成器生成器将内部查询表达式转换为逻辑计划,这些计划由逻辑操作树组成,操作符是Hive的最小处理单元,每个操作符处理代表一道HDFS操作或者是MR作业。查询计划查
6、询计划 生成器生成器将逻辑计划转化成物理计划(MR Job)。Hive的应用场景-Hive的优势解决了传统关系数据库在大数据处理上的瓶颈。适合大数据的批量处理。充分利用集群的CPU计算资源、存储资源,实现并行计算。Hive支持标准SQL语法,免去了编写MR程序的过程,减少了开发成本。具有良好的扩展性,拓展功能方便。Hive的优势-上百行MR程序与一条HQL的对比Hive的应用场景-Hive的缺点Hive的应用场景适用场景海量数据的存储处理数据挖掘海量数据的离线分析不适用场景复杂的机器学习算法复杂的科学计算联机交互式实时查询Hive开发使用-Hive的连接HiveServer2目前Hive的Th
7、rift服务端通常使用HiveServer2,它是HiveServer改进版本,它提供了新的ThriftAPI来处理JDBC或者ODBC客户端,可以进行Kerberos身份验证,支持多个客户端并发。BeeLineHiveServer2还提供了新的CLI:BeeLine,它是Hive 0.11引入的新的交互式CLI,基于SQLLine,可以作为Hive JDBC Client 端访问HievServer2。通过BeeLine连接hivehive安装目录/bin/./beeline-u jdbc:hive2:/hiveServer2所在ip:端口号-n 用户名例如:./beeline-u jdbc
8、:hive2:/127.0.0.1:10000-n rootHive开发使用-Hive的基本数据类型基本类型大小描述TINYINT1个字节有符号整数SMALLINT2个字节有符号整数INT4个字节有符号整数BIGINT8个字节有符号整数STRING最大2GB字符串,类似SQL中的VARCHAR类型FLOAT4个字节单精度浮点型DOUBLE8个字节双精度浮点型BOOLEANTRUE/FALSEHive开发使用-Hive的复杂数据类型Hive开发使用-Hive元数据库表简介表名说明关联键DBS元数据库信息,存放HDFS路径信息DB_IDTBLS所有hive表的基本信息TBL_ID,SD_ID,DB
9、_IDTABLE_PARAM表级属性,如是否外部表,表注释等TBL_IDCOLUMNS_V2Hive表字段信息(字段注释,字段名,字段类型,字段序号)CD_IDSDS所有hive表、表分区所对应的hdfs数据目录和数据格式SD_ID,SERDE_IDSERDESHive表的序列化类型SERDE_IDSERDE_PARAM序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等SERDE_IDPARTITIONSHive表分区信息PART_ID,SD_ID,TBL_IDPARTITION_KEYSHive分区表分区键TBL_IDPARTITION_KEY_VALSHive表分区名(键值)P
10、ART_IDSEQUENCE_TABLE保存Hive对象的下一个可用ID,包括数据库,表,字段,分区等对象的下一个ID。默认ID每次+5SEQUENCE_NAME,NEXT_VALHive开发使用-Hive的数据模型Hive数据库 类似传统数据库的DataBase,在元数据库里实际是一张表。对应于HDFS上的数据仓库目录下是一个文件夹。数据仓库目录路径,由hive-site.xml中$hive.metastore.warehouse.dir 参数指定。创建数据库示例:create database 数据库名;元数据库中查询数据库列表:select*from dbs;如下图:Hive开发使用-H
11、ive的数据模型内部表 内部表与关系数据库中的Table在概念上类似。每一个Table在Hive中都有一个相应的目录存储数据。所有的Table数据(不包括External Table)都保存在这个目录中。删除表时,元数据与数据都会被删除。元数据库中查询数据表列表:HDFS下对应存储目录:Hive开发使用-Hive的数据模型 外部表 外部表指向已经在HDFS中存在的数据,可以创建Partition。它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异。内部表的创建过程和数据加载过程这两个过程可以分别独立完成,也可以在同一个语句中完成,在加载数据的过程中,实际数据会被移动到数据仓库目
12、录中;之后对数据访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。而外部表只有一个过程,加载数据和创建表同时完成(CREATE EXTERNAL TABLE LOCATION),实际数据是存储在LOCATION后面指定的 HDFS 路径中,并不会移动到数据仓库目录中。当删除一个External Table时,仅删除该链接。Hive开发使用-Hive的数据模型如何选择使用内部表或外部表?如果所有处理都由hive来完成,则使用内部表如果需要用hive和外部其他工具处理同一组数据集,则使用外部表。Hive开发使用-Hive的数据模型 分区 Partition对应于关系数据
13、库中的Partition列的密集索引,但是Hive中Partition的组织方式和数据库中的很不相同。在Hive中,表中的一个Partition对应于表下的一个目录,所有的Partition的数据都存储在对应的目录中。例如pvs表中包含ds和city两个Partition,则对应于ds=20090801,city=jinan 的HDFS子目录为:/wh/pvs/ds=20090801/city=jinan;Hive开发使用-Hive的数据模型 桶 Buckets是将表的列通过Hash算法进一步分解成不同的文件存储。它对指定列计算hash,根据hash值切分数据,目的是为了并行,每一个Bucke
14、t对应一个文件。分区是粗粒度的划分,桶是细粒度的划分,这样做为了可以让查询发生在小范围的数据上以提高效率。适合进行表连接查询、适合用于采样分析。例如将user列分散至32个bucket,首先对user列的值计算hash,则对应hash值为0的HDFS目录为:/wh/pvs/ds=20090801/ctry=US/part-00000;对应hash值为20的HDFS目录为:/wh/pvs/ds=20090801/ctry=US/part-00020。如果想应用很多的Map任务这样是不错的选择。Hive开发使用-Hive的数据模型 Hive的视图 视图与传统数据库的视图类似。视图是只读的,它基于的
15、基本表,如果改变,数据增加不会影响视图的呈现;如果删除,会出现问题。如果不指定视图的列,会根据select语句后的生成。视图的简单示例:创建表:create view test_view as select*from test;查看数据:select*from test_view;Hive开发使用-Hive的数据存储模型数据库(database)表(table)表(table)常规数据(data)(Buckets)桶(Buckets)桶分区(Partition)分区(Partition)(Buckets)桶(Buckets)桶Hive开发使用-Hive创建数据表命令 AS SEQUENCE。C
16、REATE EXTERNAL TABLE IF NOT EXISTS table_name (col_name data_type COMMENT col_comment,.)COMMENT table_comment PARTITIONED BY(col_name data_type COMMENT col_comment,.)CLUSTERED BY(col_name,col_name,.)SORTED BY(col_name ASC|DESC,.)INTO num_buckets BUCKETS ROW FORMAT row_format STORED AS file_format LO
17、CATION hdfs_pathHive开发使用-Hive加载数据命令Load 操作只是单纯的复制/移动操作,将数据文件移动到 Hive 表对应的位置。如果表中存在分区,则必须指定分区名。加载本地数据,指定LOCAL关键字,即本地,可以同时给定分区信息。load 命令会去查找本地文件系统中的 filepath。如果发现是相对路径,则路径会被解释为相对于当前用户的当前路径。用户也可以为本地文件指定一个完整的 URI,比如:file:/user/hive/project/data1.例如:加载本地数据,同时给定分区信息:hive LOAD DATA LOCAL INPATH file:/examp
展开阅读全文