Hadoop大数据开发基础 教案 5 教学设计 Hadoop大数据仓库工具Hive_第1页
Hadoop大数据开发基础 教案 5 教学设计 Hadoop大数据仓库工具Hive_第2页
Hadoop大数据开发基础 教案 5 教学设计 Hadoop大数据仓库工具Hive_第3页
Hadoop大数据开发基础 教案 5 教学设计 Hadoop大数据仓库工具Hive_第4页
Hadoop大数据开发基础 教案 5 教学设计 Hadoop大数据仓库工具Hive_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

课程名称:Hadoop大数据开发基础

章节名称:Hadoop大数据仓库工具Hive

北京智酷道捷教育科技有限公司

年月

目录

一、基本说明...................................................................2

二、教学目标...................................................................2

三、教学重点...................................................................2

四、教学难点....................................................................3

五、教学方法....................................................................3

六、教学准备....................................................................3

七、教学过程....................................................................3

八、板书削..................................................................17

九、教具......................................................................18

十、教学反思..................................................................18

一、基本说明

1.授课班级:

2.授课人数:

3.教学时间:

4.课时:6课时

5.课型:理论+实践

二、教学目标

1.知识与技能

>通过学习本课程,学生能够理解Hive的组件架构和体系结构。

>通过学习本课程,学生能够掌握Hive表的创建和相关操作。

>通过学习本课程,学生能够掌握分区表和分桶技术的使用。

2.过程与方法

>通过学习本课程并完成相关练习,学生能够熟练搭建Hive及其各个组件。

>通过学习本课程并完成相关练习,学生能够掌握自定义函数UDF的编写。

3.情感、态度、价值观

>通过探究学习Hive的组件架构和体系结构,并掌握Hive的安装配置及Hive表的

相关操作,学生可以对Hadoop大数据仓库工具Hive形成整体认识,进一步了解

它分析存储在Hadoop中的大规模数据,并进行ETL操作(提取、转化、加载)的

原理及应用。

三、教学重点

>Hive表的操作案例演示。

>Hive表的操作案例练习。

AHive函数。

AUDF开发案例演示。

>UDF案例编程练习。

四、教学难点

>无。

五、教学方法

>边讲边练+实战演练:首先老师可以边讲边练的方式对Hive进行整体介绍,并介绍

Hive的安装配置、Hive表的相关操作及Hive自定义函数的编写。最后,老师可以

通过两个案例直观演示Hive表的操作和UDF的开发,让大家能够掌握Hadoop大

数据仓库工具Hive的使用。

六、教学准备

1.学生准备

>注册道捷实训云账号并开通会员。

>虚拟机软件vmware。

>IDEA开发工具。

2.教师准备

>注册道捷实训云账号并开通会员。

>虚拟机软件vmware。

>IDEA开发工具。

七、教学过程

1,导入新课

(1)回顾上节课内容并答疑解惑

回顾上一节课的内容,并对上一节课布置的作业以及学生提出的问题进行答疑解惑。

(2)进入主题,展开详细讲解

本节课分为4部分,第1部分对Hive进行了整体介绍,包括Hive的概念、Hive与关

系型数据库的异同、Hive的组件以及体系结构等,让我们能够对Hive技术有一个宏观的了

解。第2部分介绍了Hive的安装配置,包括Hive的安装流程和各个组件的详细配置情况,

以便为后面的学习和应用打好基础。第3部分介绍了Hive表的相关操作,包括一些优化的

技术、分区表和分桶技术等,并通过具体实例对Hive表的操作进行了演示。第4部分介绍

了Hive自定义函数的编写,也通过具体的UDF开发案例进行了演示。

(3)明确学习目标

>理解Hive的组件架构和体系结构。

>能够熟练搭建Hive及其各个组件。

>掌握Hive表的创建和相关操作。

>掌握分区表和分桶技术的使用。

>掌握自定义函数UDF的编写。

2.讲授课程

(1)Hive介绍

本节课我们学习Hadoop大数据仓库工具Hive,首先要了解其概念、组件、体系结构

以及应用等。

1)什么是Hive

定义:

Hive是基于Hadoop的数据仓库工具,可以用来对存储在Hadoop中的大规模数据

进行ETL操作(提取、转化、加载)。

起源:

•MapReduce实现复杂查询逻辑开发难度太大

•为了让熟悉SQL但编程技能相对比较薄弱的分析人员可对存储在HDFS中的大数据

集进行查询分析。

主要功能:

可以将结构化、半结构化的数据文件映射为一张数据库表,并提供类SQL查询功能

2)Hive与关系型数据库的差异

区别Hive关系型数据库

查询语言HQLSQL

数据存储位置HDFS本地文件系统

数据格式判断查询时判断插入时判断

执行MRExecutor

执行延迟高低

处理数据规模大小

3)Hive组件总体框图

4)Hive的体系结构

HiveclientsHiveservicesHive存1诸和计算

5)Hive的应用

一是数据仓库ETL任务,当然这个数据仓库是指大数据的数据仓库;

二是对网站日志的分析,因为现在互联网公司非常多,互联网的访问数据量也非常大,

所以也需要通过Hive进行数据分析;

三是海量数据的离线分析,也就是只要适合MapReduce工作的场景,一般Hive都会

适用。

(2)Hive的安装配置

1)安装Hive

第一步,确定Hive的版本。因为Hive是在Hadoop上使用的,所以Hive的版本需

要与当前使用的Hadoop版本匹配。

第二步,解压安装包。下载匹配的Hive版本后要解压安装包,解压命令为tarxzf

apache-hive-x.y.z-bin.tar.gzo

第三步,设置环境变量。首先配置HIVE_HOME环境变量为exportHIVE_HOME={$

装目录路径};然后将HIVE_HOME下的bin目录配置到PATH目录下,具体为export

PATH=$PATH:$HIVE_HOME/bino

2)元数据库设置

•属性设置

属性名称类型默认值描述

hive.metastore.warehouse.dirURI/user/hive/warehouse托管表存储位置

逗号分隔如受未设定厕使用

hive.metastore.uris的URI未设定当前的metastore

jdbc:derby:;database

javax.jdo.option.ConnectionURLURImetastore数据库

Name=metastore_db;

的JDBCURL

create=true

org.apache.derbty.jdbJDBC驱动器的类

javax.jdo.option.ConnectionDriverName字符串

c.EmbeddedDriver名

javax.jdo.option.ConnectionUserName字符串略JDBC用户名

javax.jdo.option.ConnectionPassword字符串略JDBC密码

•三种配置方式

Embedded

metastore

LocalHiveServiceJVM

metastore

DriveraMetastore

HiveServiceJVM

Driver>Metastore

RemoteHiveServiceJVM

metastore

第一种方式Embeddedmetastore,即嵌入式元数据的方式,使用derby的默认方

式,在执行脚本的当前目录下查找元数据库信息。

第二种方式是Localmetastore,即本地模式,这种方式需要配置一个单独的元数据库,

通常这个数据库会采用MySQL,然后在Hive的配置文件中配置相应的元数据库信息。

第三种方式Remotemetastore即远程服务器的方式。这种方式也需要有一个MySQL

数据库来充当元数据库,然后需要额外在集群中的一台机器上配置元数据库的配置信息。

•元数据库Server配置

在Hive服务器端通过hive-servicemetastore命令启动元数据库服务,其他充当

Hive客户端的机器上在hive-site.xml文件中配置hive.metastore.uris,即配置元数据库

服务器的连接地址。然后通过ThriftRPC协议访问这个元数据库的信息。

HiveCU

MetaStoreMetaStoreServerMySQL

Client(Thrift)

Server

3)关于HiveWebInterface

HiveWebInterface组件简称HWI,是指通过浏览器以图形化的方式来使用Hive。

HiveWebInterface组件只在Hive2.2.0之前版本可用,目前在Hive2.3版本已被弃用,

弃用的原因是Hive官方认为这个组件使用的人数比较少,维护该组件的意义不大,所以就

取消了这个组件。

4)配置使用Hcatalog

•配置Hcatalog

酉己置hcat_server.sh:

位于{$HIVE_HOME}/hcatalog/sbin/

exportHCAT_LOG_DIR={目录路径}

启动hcatalog服务:

{$HIVE_HOME}/hcatalog/sbin/hcat_server.shstart

停止hcatalog服务:

{$HIVE_HOME}/hcatalog/sbin/hcat_server.shstop

•HCatalog组件的优点

•使用HCatalog有助于与其他工具的集成,并为Pig、Hive和MapReduce提供读

写接口访问元数据信息。

•HCatalog还提供了Restful接口,方便用于外部数据的访问。

•HCatalog还与Sqoop框架进行了集成,Sqoop是一种用于Hadoop和关系型数

据库之间传输数据的工具。

•WebHCat组件

WebHCat组件的使用方法如下。

启动WebHCat服务:{$HIVE_HOME}/hcatalog/sbin/webhcat_server.shstart

通浏览器访问测试:http:〃{主机名}:50111/templeton/vl/status

可以通过如下所示的图来了解WebHCat组件的工作流程。

•HCatalog组件的应用

•打开Linux客户端工具,通过netstat-na|grep9083命令查看一下9083端口是

否开启。

•通过hcat_server.sh脚本开启HCatalog服务。这里需要对该脚本进行适当的编辑,

可以输入vihcat_server.sh命令,按下Enter键,在该脚本中添加一句话:export

HCAT_LOG_DIR=opt/apache-hive-2.3.6-bin/hcatalog/logso

•输入.hcat_server.shstart命令,按下Enter键,启动成功。

5)配置hiveserver2和beeline

启动hiveserver2服务:

{$HIVE_H0ME}/bin/hiveserver2

使用beeline:

{$HIVE_HOME}/bin/beeline-ujdbc:hive2:〃{主机名}:10000

酉己置hadoop中的core-site.xml:

设置代理用户root在hadoop中的执行权限。

(3)Hive表的操作

1)Hive表的类型

Hive表分为四种类型,分别是内部表、外部表、分区表和分桶表,下面分别讲解其特

点。

内部表指的是使用命令创建表之后需要通过一些脚本语句加载数据文件到表中,这样才

能查到数据。当删除表的时候除了会将表的定义从元数据中删除之外,还会把表的数据一并

删除,所以在内部表中表的数据是受Hive本身控制的,因此内部表又称为受控表。

外部表是指当创建表的时候数据文件已经存在,创建表的时候只需要指定数据文件的路

径就可以把数据从表中查询出来,当删除表的时候并不会删除关联的数据文件。外部表通常

会用在数据共享的场合。

分区表是指当单表的数据量非常大的时候,可以通过一个分区字段或者多个分区字段对

数据进行分区存储,并且指定的分区字段值不相同的话,对应的记录就会存储在不同的目录

下,这样可以提高查询的性能。

分桶表是指对数据进行更细粒度的划分,可以按照某列属性值的Hash值对数据进行区

分。分桶表一般是和分区表配合使用的,主要用在数据抽样和表关联查询的场合。

2)Hive的数据类型

•Hive的基本数据类型

数据类型所占字节

TINYINTlbyte,-128-127

SMALLINT2byte,-32,768-32,767

INT4byte,-2,147,483,648-2,147,483,647

BIGINT8byte,-9,223,372,036,854,775,808~9,223,372,036,854,775,807

BOOLEAN

FLOAT

DOUBLE

STRING

BINARY

TIMESTAMP

DECIMAL

CHAR

VARCHAR

DATE

•Hive的复杂数据类型

除了常用的基本数据类型之外,Hive还提供了一些复杂数据类型加array类型、m叩

类型、struct类型、union类型等。

3)Hive基本建表语句

CREATE[EXTERNAL]table[表名]

([列名列数据类型,.…])

ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'

STOREDASTEXTFILE

[LOCATIONhdfs_path]

createexternaltableifnotexistsemployee__external(

namestring,

workplacearray<string>>

sex_agestruct<sex:string,age:int>,

skills_scoremap<string,int>,

depart_titlemap<string,array<string>>

)

rowformatdelimited

fieldsterminatedby*|*

collectionitemsterminatedby

mapkeysterminatedby*:*

storedastextfile

location■/temp/dat“employee•

4)Hive表加载数据

建表完成后需要将数据加载到Hive表,Hive提供了loaddata语句和insert语句进

行数据加载操作。loaddata语句可以将数据从本地文件系统中加载到Hive表中,也就是

Hive的数据是存储在分布式文件系统中的,同时它也可以将分布式文件系统中的数据加载

到Hive表对应的目录下。insert语句能够进行单行数据的插入和结果集数据的插入,并且

还可以做数据的导出工作。

5)Hive表的基本操作

•创建表并查询数据

通过createtableperson(idint,namestring)rowformatdelimitedfields

terminatedby'\t'storedastextfile;语句来创建表。

输入select*fromperson;命令可以查询表。

•导入数据

•使用loaddata语句导入数据

通过loaddatalocalinpath,file:///opt/testdata/person.txt,overwriteinto

tableperson;语句导入数据。

使用insert语句导入数据

输入insertintoperson(id,name)values(3,,wangwu');命令导入数据。

•使用hdfs命令导入数据

Hive表下的数据文件除了通过loaddata等语句进行导入外,使用hdfs相关的命令将

数据文件放到Hive表的目录下同样能够实现数据导入的效果。

•导出数据

通过insertoverwrite语句能实现数据的导出操作。

•复杂数据类型的使用

首先需要准备一张名为student的表,建表信息如下:

CREATETABLEstudent(

idINT,

nameSTRING,

ageINT,

favARRAY<STRING>,

addrMAP<STRING,STRING>,

contactsSTRUCT<mobile:STRING,maikSTRING,qq:String>

)

ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'

COLLECTIONITEMSTERMINATEDBY'-'

MAPKEYSTERMINATEDBY

STOREDASTEXTFILE;

导入数据如下:

1lisi18study-game-driverstd_addr:beijing-work_addr:shanghai

lllll-test@163.com-3435455

以上就是复杂数据类型的建表语句和数据格式。

•Hive修改表结构

修改Hive表结构主要有以下三种方式:

•重命名表:ALTERTABLE表名RENAMETOnew_table_name;

•改变列名/类型:ALTERTABLE表名CHANGEcol_old_namecol_new_name

column_type;

•增加/更新列:ALTERTABLE表名ADD|REPLACECOLUMNS(col_name

datatype[CONMMENTcol_comment],...);

•Hive的CRUD操作总结

Hive支持select语句进行查询;可以通过insertinto语句、insertoverwrite语句和

loaddata语句进行插入操作;至于数据的更新和删除,只能在支持ACID的表上执行,对

此目前我们可以理解为Hive不支持对数据的更新和删除,后续在学习到ACID的时候再去

使用这两个功能。

6)Hive分区表

分区表的作用:当数据量比较大的时候一般通过建表指定分区字段,让数据根据分区分

开存储,不同分区的数据会存储在不同的目录下,这样在查询的时候就不用做全表扫描,根

据当前查询的数据分区去特定的目录下扫描数据即可,能够加快数据查询的速度。在指定分

区字段的时候可以指定多个,这样可以形成多级分区的效果。

•Hive分区表建表语句

分区表建表语句与普通建表的方式大致相同,主要是通过PARTITIONEDBY(province

STRING)语句指定一个分区字段就可以了,完整命令行如下:

CREATETABLEperson(

idINT,

nameSTRING)

PARTITIONEDBY(provinceSTRING)

ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'

STOREDASTEXTFILE;

•Hive分区表示例

我们通过实例来体验一下Hive分区表的具体操作。

7)数据分桶

Hive还提供了一种建表的优化方式,即数据分桶。数据分桶主要是利用建表时提供一

个分桶字段,这个分桶字段会与分桶的数量做模运算,按照模运算的值相同的数据进行同一

个分区。

数据分桶的作用主要表现在两方面,首先是方便抽样,数据经过模运算之后可以将相同

的值取出来做一个桶的数据,这样就可以做一些抽样的效果;其次可以提高join直询效率,

由于数据分桶之后可以按照桶识别数据,如果这个分桶字段在关联的时候值相同,就会到特

定的分桶上去找关联的数据,这样两表所有的数据不会做完整的笛卡尔积,从而能够大大缩

减直询时间。

可以通过如下所示的分桶语句来创建分桶表:

CLUSTEREDBY('分桶字段INTO{分桶数量}BUCKETS

(4)Hive自定义函数

Hive自带了一些函数,可以使用在SQL语句中,但这些函数的数量是有限的,不能完

全满足我们的业务需求,所以Hive也提供了自定义函数扩展的功能.

1)Hive函数

Hive的自定义函数可以简写为UDF(user-definedfunction),即用户自定义函数的

简称。用户自定义函数包含UDF、UDAF和UDTF三种方式。

2)UDF开发步骤

在创建一个项目之后,实现org.apache.hadoop.hive.ql.UDF的子类代码,然后在子

类里面实现evaluate函数就完成UDF的开发了。

这个函数开发完成之后要进行打包操作,然后将jar包上传到Hive的服务器节点,再

通过addjarlinuxjar_path命令将jar包添加到Hive的环境中,然后再通过create

[temporary]function[dbname]function_nameASclass_name创建函数,这样就可以

在具体的Server上使用该函数了。

3)UDF开发案例演示

通过一个具体的案例来演示UDF的开发过程。在该案例中我们要开发一个hell。。函数,

该函数的功能是在一个字段前面添加hello前缀。

3.巩固练习

(1)Hive安装配置练习。

要求:

基于Hadoop2.x高可用集群。

(2)Hive表的操作案例练习。

要求:

1)常用数据类型和建表。

2)数据导入导出。

3)复杂数据类型和建表。

4)修改表结构。

5)CRUD操作。

6)分区分桶表。

(3)UDF案例编程练习。

要求:

1)编写hello()函数。

2)在Hive下应用编写的hell。。函数。

4.课堂小结

本节课从Hive的组件架构和体系结构入手,对Hive形成整体认识。然后进行了Hive

2.3.6版本的配置安装,并对元数据服务、HCatalog服务,以及基于HCatalog的WebHCat、

hiveserver2和beeline组件的搭建进行了详细讲解。然后又介绍了各种表的操作和练习,

包括基本数据类型、复杂数据类型、建表语句,以及使用loaddata和insert语句将数据

导入到表,还介绍了分区和分桶技术的使用.最后编写了UDF函数,并进行了测试应用。

5.布置作业

(1)课下作业

编写一个UDF函数,实现将输出的字符串进行反转输出。

(2)预习作业

了解Hive的UDAF和UDTF函数的编写。

八、板书设计

Hadoop大数据仓库工具Hive

L

一(―)什么是Hive

一、课程目标

(-)Hive与关系型数据库的差异

Hive介绍一(三)Hive组件总体框图

(四)Hive的体系结构

温馨提示

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

评论

0/150

提交评论