Hive内部培训资料.pptx_第1页
Hive内部培训资料.pptx_第2页
Hive内部培训资料.pptx_第3页
Hive内部培训资料.pptx_第4页
Hive内部培训资料.pptx_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Hive 内部培训,顺丰科技-系统与数据集成研发中心-数据集成研发部,第一章,第二章,第三章,第四章,Hive 是什么,Hive 特性,怎么用Hive,Hive的调优及发展,Hive 是什么?,Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 本质是将HQL转换为MapReduce程序 Hive关注以下几点: 在Hadoop中的数据可扩展的SQL处理 可扩展到100PB+ 结构化和非结构化数据 -现阶段公司只是用到结构化的数据,Hive的架构简介 在Hadoop生态圈的位置,Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。 Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。,Hive的架构简介 接口,1、 Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 2 、解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。 3 、Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。,Hive 和普通关系数据库的异同,1 、查询语言。专门设计了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。 2、数据存储位置。Hive 的数据都是存储在 HDFS 中的。 3 、数据格式。Hive 中没有定义专门的数据格式,数据格式可以由用户指定. 4、数据更新。Hive 中不支持对数据的改写即没有更新 5、执行。Hive 中大多数查询的执行是通过 MapReduce 来实现的。 6、执行延迟。hive延迟较高。但由于MR框架 大数据量的访问优势明显。 7、可扩展性。由于 Hive 是建立在 Hadoop 之上的,因此 Hive 的可扩展性是和 Hadoop 的可扩展性是一致的(Oracle 在理论上的扩展能力也只有 100 台左右。 8、数据规模。由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据,第一章,第二章,第三章,第四章,Hive 是什么,Hive 基本操作,怎么用Hive,Hive的调优及发展,Hive基本操作 DDL,Create/Drop/Alter Database Create/Drop/Alter Table Alter Table/Partition/Column Create/Drop/Alter View Create/Drop Index Create/Drop Function Show Describe,Hive基本操作 托管表和外部表,Hive 默认创建Managed Table,由Hive来管理数据,意味着Hive会将数据移动到数据仓库目录。 另外一种选择是创建External Table,这时Hive会到仓库目录以外的位置访问数据。,如果所有处理都由Hive完成,应该使用Managed Table。 如果要用Hive和其它工具来处理同一个数据集,应该使用External Tables。,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、创建托管表(内部表:删除表,数据同时被删除) 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基本操作 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 001 location /test/fin_abc/fin_abc/fct/abc_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 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/bsl/abc_table_03/201501;,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 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;,Hive基本操作 TABLE OPERATING,Hive表的DML操作,1、插入数据 insert overwrite table 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等。,Hive基本操作 DML,Loading files into tables Inserting data into Hive Tables from queries Writing data into the filesystem from queries Note:Multiple Insert,Hive基本操作 Queries,WHERE Clause ALL and DISTINCT Clauses Partition Based Queries HAVING Clause LIMIT Clause REGEX Column Specification /confluence/display/Hive/LanguageManual+Select,Hive基本操作 Queries Join,Inner join Hive只支持等值连接; JOIN 子句中表的顺序很重要,一般最好将最大的表在最后; Outer join 外连接可以让你找到连接表中不能匹配的数据行; Semi join 目前并不支持IN子查询,可以使用LEFT SEMI JOIN达到相同效果 (右表最能在ON子句中出现); Map join 该查询Job没有reducer; 使用时充分利用Bucketed Table,需要设置hive.optimize.bucketmapjoin为true;,第一章,第二章,第三章,第四章,Hive 是什么,Hive 基本操作,怎么用Hive,Hive的调优及发展,Hive 使用 以Mc为例,数据准备 定义数据仓库放置目录: HDFS目录 /user/cloudil/cdr/bssap/20120717/ bssap - 协议类型 20120717 - 年月日 (开始时间) 以bssap为例,自行管理仓库数据,按天查询创建分区; 建表(支持按时间分区的外部表) 加载数据 LOAD DATA INPATH /user/cloudil/bssap-2012-08-05-09/ INTO TABLE bssap PARTITION (date=20120805); 数据应用 查询与ET,第一章,第二章,第三章,第四章,Hive 是什么,Hive 基本操作,怎么用Hive,Hive的调优及发展,Hive 调优 数据存储模型,数据库(database),表(table),表(table),倾斜数据,正常数据,Hive调优 - 存储格式, Built-in Formats: Parquet ORCFile RCFile Avro Delimited Text Regular Expression S3 Logfile Typed Bytes 3 rd -Party Addons: JSON XML,Hive调优 参数,以下常用设置 set =fin_abc; -指定对列 set =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的查询结果输出是否进行压缩,默认不压缩false; set ermediate=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=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; 需要注意

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论