Hive内部培训资料

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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';
11
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;
4
Hive的架构简介 – 接口
1、 Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名 字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 2 、解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优 化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。 3 、Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询, 比如 select * from tbl 不会生成 MapRedcue 任务)。
3
Hive的架构简介 – 在Hadoop生态圈的位置
建立在Hive之上的交换层
让传统DBA或者Java工程师 轻松就能完成更多的工作
最终转化成MapReduce Job Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的 名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所 在目录等。 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、 优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。 Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查 询,比如 select * from tbl 不会生成 MapRedcue 任务)。

WHERE Clause ALL and DISTINCT Clauses Partition Based Queries HAVING Clause LIMIT Clause REGEX Column Specification
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Sel ect
(Oracle 在理论上的扩展能力也只有 100 台左右。
8、数据规模。由于 Hive 建立在集群上并可以利用 MapReduce 进行并行计算,因此可以支持很大规模的数据
6
第一章
第二章 第三章 第四章
Hive 是什么
Hive 基本操作
怎么用Hive
Hive的调优及发展
7
Hive基本操作 – DDL
12
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 eБайду номын сангаасse、while等。
14
Hive基本操作 – Queries
SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list] ] [LIMIT number]
• 数据准备
– 定义数据仓库放置目录: 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');
• Map join
该查询Job没有reducer; 使用时充分利用Bucketed Table,需要设置hive.optimize.bucketmapjoin为true;
16
第一章
第二章 第三章 第四章
Hive 是什么
Hive 基本操作
怎么用Hive
Hive的调优及发展
17
Hive 使用 – 以Mc为例
如何选择?
托管表 CREATE/LOAD DROP
把数据已到仓库目录 元数据和数据会被一起删除
外部表
创建表时指明外部数据的位置 只删除元数据
9
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; 10
5
Hive 和普通关系数据库的异同
Hive 查询语言 HQL RDBMS SQL
数据存储
索引 执行 执行延迟 处理数据规模
HDFS
无 MapReduce 高 大
Raw Device or Local FS
有 Excutor 低 小
1 、查询语言。专门设计了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。 2、数据存储位置。Hive 的数据都是存储在 HDFS 中的。 3 、数据格式。Hive 中没有定义专门的数据格式,数据格式可以由用户指定. 4、数据更新。Hive 中不支持对数据的改写即没有更新 5、执行。Hive 中大多数查询的执行是通过 MapReduce 来实现的。 6、执行延迟。hive延迟较高。但由于MR框架 大数据量的访问优势明显。 7、可扩展性。由于 Hive 是建立在 Hadoop 之上的,因此 Hive 的可扩展性是和 Hadoop 的可扩展性是一致的
15
Hive基本操作 – Queries Join
• Inner join
Hive只支持等值连接; JOIN 子句中表的顺序很重要,一般最好将最大的表在最后;
• Outer join
外连接可以让你找到连接表中不能匹配的数据行;
慎重使用!
• Semi join
目前并不支持IN子查询,可以使用LEFT SEMI JOIN达到相同效果 (右表最能在ON子句 中出现);
13
Hive基本操作 – DML
• Loading files into tables • Inserting data into Hive Tables from queries • Writing data into the filesystem from queries
Note:Multiple Insert
8
Hive基本操作 – 托管表和外部表
Hive 默认创建Managed Table,由Hive来管理数据,意味着Hive会将数据移动到数 据仓库目录。 另外一种选择是创建External Table,这时Hive会到仓库目录以外的位置访问数据。
• 如果所有处理都由Hive完成,应该使用Managed Table。 • 如果要用Hive和其它工具来处理同一个数据集, 应该使用External Tables。
• • • • • • • • Create/Drop/Alter Database Create/Drop/Alter Table Alter Table/Partition/Column Create/Drop/Alter View Create/Drop Index Create/Drop Function Show Describe
顺丰科技-系统与数据集成研发中心-数据集成研发部 1
第一章
第二章 第三章 第四章
Hive 是什么
Hive 特性
怎么用Hive
Hive的调优及发展
2
Hive 是什么?
•Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文 件映射为一张数据库表,并提供类SQL查询功能。 •本质是将HQL转换为MapReduce程序 Hive关注以下几点: • 在Hadoop中的数据可扩展的SQL处理 • 可扩展到100PB+ • 结构化和非结构化数据 ---现阶段公司只是用到结构化的数据
相关文档
最新文档