Hive内部培训课件.ppt

上传人:牧羊曲112 文档编号:1285145 上传时间:2022-11-04 格式:PPT 页数:25 大小:1.02MB
返回 下载 相关 举报
Hive内部培训课件.ppt_第1页
第1页 / 共25页
Hive内部培训课件.ppt_第2页
第2页 / 共25页
Hive内部培训课件.ppt_第3页
第3页 / 共25页
Hive内部培训课件.ppt_第4页
第4页 / 共25页
Hive内部培训课件.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Hive内部培训课件.ppt》由会员分享,可在线阅读,更多相关《Hive内部培训课件.ppt(25页珍藏版)》请在三一办公上搜索。

1、Hive 内部培训,顺丰科技-系统与数据集成研发中心-数据集成研发部,Hive 内部培训顺丰科技-系统与数据集成研发中心-数据集成,第一章,第二章,第三章,第四章,Hive 是什么,Hive 特性,怎么用Hive,Hive的调优及发展,第一章第二章第三章第四章Hive 是什么Hive 特性 怎么,Hive 是什么?,Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。本质是将HQL转换为MapReduce程序Hive关注以下几点:在Hadoop中的数据可扩展的SQL处理可扩展到100PB+结构化和非结构化数据 -现阶段公司只是用到结构

2、化的数据,Hive 是什么?Hive是基于Hadoop的一个数据仓库,Hive的架构简介 在Hadoop生态圈的位置,Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。 Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl

3、 不会生成 MapRedcue 任务)。,Hive的架构简介 在Hadoop生态圈的位置建立在Hi,Hive的架构简介 接口,1、 Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 2 、解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。 3 、Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 sele

4、ct * from tbl 不会生成 MapRedcue 任务)。,Hive的架构简介 接口1、 Hive 将元数据存储在数,Hive 和普通关系数据库的异同,1 、查询语言。专门设计了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。 2、数据存储位置。Hive 的数据都是存储在 HDFS 中的。3 、数据格式。Hive 中没有定义专门的数据格式,数据格式可以由用户指定.4、数据更新。Hive 中不支持对数据的改写即没有更新5、执行。Hive 中大多数查询的执行是通过 MapReduce 来实现的。 6、执行延迟。hive延迟较高。但由于MR框架

5、 大数据量的访问优势明显。 7、可扩展性。由于 Hive 是建立在 Hadoop 之上的,因此 Hive 的可扩展性是和 Hadoop 的可扩展性是一致的(Oracle 在理论上的扩展能力也只有 100 台左右。 8、数据规模。由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据,Hive 和普通关系数据库的异同 Hive RDBMS 查,第一章,第二章,第三章,第四章,Hive 是什么,Hive 基本操作,怎么用Hive,Hive的调优及发展,第一章第二章第三章第四章Hive 是什么Hive 基本操作,Hive基本操作 DDL,Create/D

6、rop/Alter DatabaseCreate/Drop/Alter TableAlter Table/Partition/ColumnCreate/Drop/Alter ViewCreate/Drop IndexCreate/Drop FunctionShowDescribe,Hive基本操作 DDLCreate/Drop/Alte,Hive基本操作 托管表和外部表,Hive 默认创建Managed Table,由Hive来管理数据,意味着Hive会将数据移动到数据仓库目录。另外一种选择是创建External Table,这时Hive会到仓库目录以外的位置访问数据。,如果所有处理都由Hiv

7、e完成,应该使用Managed Table。如果要用Hive和其它工具来处理同一个数据集,应该使用External Tables。,Hive基本操作 托管表和外部表Hive 默认创建Man,Hive基本操作 DATABASE,在Hive中创建数据库及托管表(内部表),1、登录进入Hive sudo -u hdfs hive;2、查看数据库 show databases;3、创建数据库 create database if not exists abc_test;4、进入abc_test数据库 use abc_test;5、查看数据库下所有的表 show tables;6、创建托管表(内部表:删

8、除表,数据同时被删除) drop table if exists abc_table_01; create table abc_table_01( id int comment 序列, name string comment 名称 )comment 创建托管表(内部表) row format delimited fields terminated by 001;7、查看表结构 desc formatted abc_table_01;,Hive基本操作 DATABASE在Hive中创建数据库,Hive基本操作 Partition,Hive外部表与分区表建立。,1、创立外部表(删除外部表,数据不会

9、被删除) drop table if exists abc_table_02; create external table abc_table_02 ( id int comment 序列, name string comment 名称 ) comment 创建外部表 row format delimited fields terminated by 001 location /test/fin_abc/fin_abc/fct/abc_table_02;2、创建立分区表 drop table if exists abc_table_03; create external table abc_t

10、able_03 ( id int comment 序列, name string comment 名称 ) comment 创建外部表 partitioned by (hq_month_code string) row format delimited fields terminated by 001 location /test/fin_abc/fin_abc/bsl/abc_table_03;3、添加分区 alter table abc_table_03 add partition(hq_month_code=201501) location /test/fin_abc/fin_abc/b

11、sl/abc_table_03/201501;,Hive基本操作 Partition Hive外部表与分,Hive基本操作 TABLE OPERATING,Hive数据库和表的DDL操作,1、修改表名 alter table abc_table_01 rename to abc_table_01_new;2、添加字段(不能删除字段) alter table abc_table_01_new add columns (abc string);3、修改字段 alter table abc_table_01_new change abc new_abc string;4、删除分区 alter tab

12、le abc_table_03 drop partition(hq_month_code=201501);5、查看分区 show partitions abc_table_03;6、删除表 drop table abc_table_01_new;7、删除数据库 drop database if exists abc_test cascade;,Hive基本操作 TABLE OPERATINGHiv,Hive基本操作 TABLE OPERATING,Hive表的DML操作,1、插入数据 insert overwrite table abc_table_01 select count(*) as

13、id,test1 from abc_table_01; insert into table abc_table_01 select 1 as id,test12 from abc_table_01;2、查询数据 select a.* from abc_table_01 a; select a.* from abc_table_01 a limit 10;注意:1、Hive支持并行插入。 2、Hive不支持不等值连接。 3、Hive中没有控制语句如for、if else、while等。,Hive基本操作 TABLE OPERATINGHiv,Hive基本操作 DML,Loading files

14、into tablesInserting data into Hive Tables from queriesWriting data into the filesystem from queriesNote:Multiple Insert,Hive基本操作 DMLLoading files in,Hive基本操作 Queries,WHERE ClauseALL and DISTINCT ClausesPartition Based QueriesHAVING ClauseLIMIT ClauseREGEX Column Specificationhttps:/cwiki.apache.org

15、/confluence/display/Hive/LanguageManual+Select,Hive基本操作 QueriesWHERE Clause,Hive基本操作 Queries Join,Inner joinHive只支持等值连接;JOIN 子句中表的顺序很重要,一般最好将最大的表在最后;Outer join外连接可以让你找到连接表中不能匹配的数据行;Semi join目前并不支持IN子查询,可以使用LEFT SEMI JOIN达到相同效果 (右表最能在ON子句中出现);Map join该查询Job没有reducer;使用时充分利用Bucketed Table,需要设置hive.opt

16、imize.bucketmapjoin为true;,Hive基本操作 Queries JoinInner j,第一章,第二章,第三章,第四章,Hive 是什么,Hive 基本操作,怎么用Hive,Hive的调优及发展,第一章第二章第三章第四章Hive 是什么Hive 基本操作,Hive 使用 以Mc为例,数据准备定义数据仓库放置目录: HDFS目录 /user/cloudil/cdr/bssap/20120717/ bssap - 协议类型 20120717 - 年月日 (开始时间) 以bssap为例,自行管理仓库数据,按天查询创建分区;建表(支持按时间分区的外部表)加载数据LOAD DATA

17、 INPATH /user/cloudil/bssap-2012-08-05-09/INTO TABLE bssapPARTITION (date=20120805);数据应用查询与ET,Hive 使用 以Mc为例数据准备,第一章,第二章,第三章,第四章,Hive 是什么,Hive 基本操作,怎么用Hive,Hive的调优及发展,第一章第二章第三章第四章Hive 是什么Hive 基本操作,Hive 调优 数据存储模型,数据库(database),表(table),表(table),倾斜数据,正常数据,Hive 调优 数据存储模型数据库(database)表,Hive调优 - 存储格式,Buil

18、t-in Formats: ParquetORCFile RCFile Avro Delimited Text Regular Expression S3 Logfile Typed Bytes 3 rd -Party Addons: JSON XML,Hive调优 - 存储格式Built-in Format,Hive调优 参数,以下常用设置set mapred.queue.name=fin_abc; -指定对列set mapred.job.queue.name=fin_abc;set hive.fetch.task.conversion=more; -对于简单的不需要聚合的类似SELECT不

19、需要起MapReduce.set hive.cli.print.header=true; -打印列名set hive.exec.reducers.max=200; -最大reducers数set press.output=false; -控制hive的查询结果输出是否进行压缩,默认不压缩false;set press.intermediate=true; -决定查询的中间 map/reduce 的输出是否为压缩set mapred.max.split.size=1000000000; -每个map的最大输入大小,该值约小,map数越多;set mapred.min.split.size.per

20、.node=1000000000; -一个节点上split的至少的大小set mapred.min.split.size.per.rack=1000000000; -一个交换机下split至少的大小set hive.auto.convert.join=true; -输入小表时自动起动 Map Join,从而加快大表关联小表的 Join 速度。 set hive.groupby.skewindata=true; -有数据倾斜的时候进行负载均衡job。默认是minimal当使用bucket数据时set hive.enforce.bucketing=true;set hive.enforce.sor

21、ting=true;set hive.optimize.bucketmapjoin=true;需要注意io.sort.mb更多 ,Hive调优 参数以下常用设置Check Your Se,Hive调优 EXPLAIN,EXPLAIN EXTENDED | DEPENDENCY在使用查询语句前,可以使用EXPLAIN关键字查看HIVE将为某个查询使用多个MapReduce作业。 EXPLAIN的输出中有很多查询执行计划的详细信息,包括抽象语法树、Hive执行各阶段之间的依赖图以及每个阶段的信息。如果要查看更详细的信息,可以在查询时加上EXTENDED。DEPENDENCY 以json格式输出执行语句会读取的input table和input partition信息,这样debug语句会读取哪些表就很方便了。,Hive调优 EXPLAINEXPLAIN EXTEN,Thank You!,Thank You!,知识回顾Knowledge Review,知识回顾Knowledge Review,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号