收藏 分享(赏)

Hive内部培训资料.pptx

上传人:weiwoduzun 文档编号:3789834 上传时间:2018-11-19 格式:PPTX 页数:24 大小:761.69KB
下载 相关 举报
Hive内部培训资料.pptx_第1页
第1页 / 共24页
Hive内部培训资料.pptx_第2页
第2页 / 共24页
Hive内部培训资料.pptx_第3页
第3页 / 共24页
Hive内部培训资料.pptx_第4页
第4页 / 共24页
Hive内部培训资料.pptx_第5页
第5页 / 共24页
点击查看更多>>
资源描述

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

2、层让传统 DBA或者 Java工程师轻松就能完成更多的工作最终转化成 MapReduce JobHive 将元数据存储在数据库中,如 mysql、 derby。 Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。 Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 Map

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

4、 6Hive 和普通关系数据库的异同 Hive RDBMS 查询语 言 HQL SQL 数据存 储 HDFS Raw Device or Local FS 索引 无 有 执 行 MapReduce Excutor 执 行延 迟 高 低 处 理数据 规 模 大 小 1 、 查询语言。专门设计 了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。 2、 数据 存储位置 。 Hive 的数据都是存储在 HDFS 中的 。3 、 数据格式 。 Hive 中没有定义专门的数据格式,数据格式可以由用户 指定 .4、 数据 更新 。 Hive 中不支持对数据的

5、改写 即没有更新5、 执行 。 Hive 中大多数查询的执行是通过 MapReduce 来实现 的。 6、 执行 延迟 。 hive延迟较高。 但由于 MR框架 大数据量的访问优势明显 。 7、 可 扩展性。由于 Hive 是建立在 Hadoop 之上的,因此 Hive 的可扩展性是和 Hadoop 的可扩展性是一致的( Oracle 在理论上的扩展能力也只有 100 台左右。 8、 数据 规模。由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的 数据7第一章第一章第二章第二章第三章第三章第四章第四章Hive 是什么Hive 基本操作 怎么用 Hi

6、veHive的调优及发展8Hive基本操作 DDL Create/Drop/Alter Database Create/Drop/Alter Table Alter Table/Partition/Column Create/Drop/Alter View Create/Drop Index Create/Drop Function Show Describe9Hive基本操作 托管表和外部表Hive 默认 创建 Managed Table,由 Hive来管理数据,意味着 Hive会将数据移动到数据仓库目录。另外一种选择是创建 External Table,这时 Hive会到仓库目录以外的位置

7、访问数据。如何选择? 如果所有处理都由 Hive完成,应该使用 Managed Table。 如果要用 Hive和其它工具来处理同一个数据集,应该使用 External Tables。托管表 外部表CREATE/LOAD 把数据已到 仓库 目 录 创 建表 时 指明外部数据的位置DROP 元数据和数据会被一起 删 除 只 删 除元数据10Hive基本操作 DATABASE 在 Hive中创建数据库及托管表 (内部表 )1、登 录进 入 Hivesudo -u hdfs hive;2、 查 看数据 库show databases;3、 创 建数据 库create database if not

8、exists abc_test;4、 进 入 abc_test数据 库use abc_test;5、 查 看 数据 库 下所有的 表show tables;6、 创 建托管表 (内部 表: 删 除表,数据同 时 被 删 除 )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

9、 formatted abc_table_01;11Hive基本操作 Partition Hive外部表与分区表建立。1、 创 立 外部表 (删 除外部表,数据不会被 删 除 )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 001location /test/fin_abc/fin_abc/fct/abc

10、_table_02;2、 创 建立分区 表drop table if exists abc_table_03;create external table abc_table_03(id int comment 序列 ,name string comment 名称 ) comment 创 建外部表 partitioned by (hq_month_code string)row format delimited fields terminated by 001location /test/fin_abc/fin_abc/bsl/abc_table_03;3、添加 分区alter table ab

11、c_table_03 add partition(hq_month_code=201501) location /test/fin_abc/fin_abc/bsl/abc_table_03/201501;12Hive基本操作 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_t

12、able_01_new change abc new_abc string;4、 删 除分区alter table 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;13Hive基本操作 TABLE OPERATING Hive表的 DML操作1、插入 数据insert overwrite table

13、abc_table_01 select count(*) as 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等。14Hive基本操作 DML L

14、oading files into tables Inserting data into Hive Tables from queries Writing data into the filesystem from queriesNote: Multiple Insert15Hive基本操作 Queries WHERE Clause ALL and DISTINCT Clauses Partition Based Queries HAVING Clause LIMIT Clause REGEX Column Specificationhttps:/cwiki.apache.org/conflu

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

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

17、pPARTITION (date=20120805); 数据应用 查询与 ET19第一章第一章第二章第二章第三章第三章第四章第四章Hive 是什么Hive 基本操作 怎么用 HiveHive的调优及发展20Hive 调优 数据存储模型数据库( database)表 ( table) 表 ( table)倾斜数据 正常 数据分区分区桶 桶桶 桶21Hive调优 - 存储格式 uilt-in Formats: ParquetORCFile CFile vro elimited Text egular Expression 3 Logfile yped Bytes rd -Party Addons:

18、 SON ML22Hive调优 参数 以下常用设置 set mapred.queue.name=fin_abc; -指定对列 set mapred.job.queue.name=fin_abc; set hive.fetch.task.conversion=more; -对于简单的不需要聚合的类似 SELECT不需要起 MapReduce. set hive.cli.print.header=true; -打印列名 set hive.exec.reducers.max=200; -最大 reducers数 set press.output=false; -控制 hive的查询结果输出是否进行压

19、缩,默认不压缩 false; set press.intermediate=true; -决定查询的中间 map/reduce 的输出是否为压缩 set mapred.max.split.size=1000000000; -每个 map的最大输入大小,该值约小, map数越多 ; set mapred.min.split.size.per.node=1000000000; -一个节点上 split的至少的大小 set mapred.min.split.size.per.rack=1000000000; -一个交换机下 split至少的大小 set hive.auto.convert.join=

20、true; -输入小表时自动起动 Map Join,从而加快大表关联小表的 Join 速度。 set hive.groupby.skewindata=true; -有数据倾斜的时候进行负载 均衡 job。默认是 minimal 当使用 bucket数据时 set hive.enforce.bucketing=true; set hive.enforce.sorting=true; set hive.optimize.bucketmapjoin=true; 需要注意 io.sort.mb 更多 Check Your Settings !23Hive调优 EXPLAIN EXPLAIN EXTENDED | DEPENDENCY在使用查询语句前,可以使用 EXPLAIN关键字查看 HIVE将为某个查询使用多个 MapReduce作业。 EXPLAIN的输出中有很多查询执行计划的详细信息,包括抽象语法树、 Hive执行各阶段之间的依赖图以及每个阶段的信息。如果要查看更详细的信息,可以在查询时加上 EXTENDED。DEPENDENCY 以 json格式输出执行语句会读取的 input table和 input partition信息,这样 debug语句会读取哪些表就很方便 了。Thank You!

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

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报