何小豆儿在此 发表于 2024-7-30 00:50:10

云计算技能 实验八 数据堆栈Hive的安装和使用

参考资料为:
 
讲义代码-林子雨编著《大数据基础编程、实验和案例教程(第2版)》讲义所有章节代码_厦大数据库实验室博客
1.实验学时
4学时
2.实验目标


[*]熟悉Hive的安装
[*]熟悉Hive的基本用法
3.实验内容
(一)完成Hive的安装和配置Mysql接口。
先进行hive安装包的安装。
https://i-blog.csdnimg.cn/blog_migrate/6c6d2f970e0465a2d2d096ca04a57e81.png
https://i-blog.csdnimg.cn/blog_migrate/f68d29a07bc9344759db0ed4aafe8257.png
然后修改文件名和文件权限;
https://i-blog.csdnimg.cn/blog_migrate/8d47d2bb37d63abe858a90ae55f0598c.png
之后加入情况变量的路径:
https://i-blog.csdnimg.cn/blog_migrate/dcf77e9fff4bbea70b89b54d49763880.png
加入:
https://i-blog.csdnimg.cn/blog_migrate/f3b2d1743eb4e20e3b4d104136449f3c.png
然后输入命令使得配置立即见效。
之后进入对应文件夹修改文件名:
https://i-blog.csdnimg.cn/blog_migrate/18d600873b86be886d5b2db6d385a60f.png

然后创建一个新的文件.xml
https://i-blog.csdnimg.cn/blog_migrate/272e81914748c696bd368a3c3561143c.png
输入信息:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
</property>
</configuration> https://i-blog.csdnimg.cn/blog_migrate/1ef2694df92b14a4a5ee7e2d94ccd8be.png
之后配置MySQL:
先把压缩包压解,之后将压缩包复制到对应文件夹内;
https://i-blog.csdnimg.cn/blog_migrate/0edbf544e12f77d48b67ed2adde8953e.png
 https://i-blog.csdnimg.cn/blog_migrate/70f7727ba51a6e31066d96a52e3d2992.png

先安装MySql数据库:
https://i-blog.csdnimg.cn/blog_migrate/ab98f1539eaba8454e7cbbad1004a91e.png


关闭然后重新启动数据库:
https://i-blog.csdnimg.cn/blog_migrate/35df9411e956e50f7b0ac9ccad95f15a.png

乐成进入数据库:
https://i-blog.csdnimg.cn/blog_migrate/89d7e835b5a249bedd8f6acddeeb85a1.png
进入sql的shell命令
https://i-blog.csdnimg.cn/blog_migrate/2cec4a92e32a65fb601663baad2c7636.png
测试几个功能:
查看sql当前字符格式:
https://i-blog.csdnimg.cn/blog_migrate/7d9cfd6b849f9715c384121aba053a53.png
临时设置编码格式:
https://i-blog.csdnimg.cn/blog_migrate/30b11bdd7ff9e4c8d483d2cefefd0b3a.png
通过修改配置文件来进行编码格式的永世修改:
https://i-blog.csdnimg.cn/blog_migrate/a99705c2cc9311dc30f5827afb053653.png
在下面加上character_set_server=utf8即可
这里要留意,必要修改文件权限才可以进行修改,添加代码的利用。
https://i-blog.csdnimg.cn/blog_migrate/79c0aac1b75b3df6c38ccd736629b788.png

之后进入mysql查看发现已经修改utf8(character_set_server)乐成:
https://i-blog.csdnimg.cn/blog_migrate/962d92094e37884c50576ece4c0cacf2.png
之后是mysql数据库的基本利用:
显示数据库:
https://i-blog.csdnimg.cn/blog_migrate/707853812e84d0f9f8c142238cc6865f.png
使用use命令打开数据库:
https://i-blog.csdnimg.cn/blog_migrate/ccafa315dace7ef59503a540ef3ea201.png
使用下面的命令显示数据库中的表:
https://i-blog.csdnimg.cn/blog_migrate/35c596b65cd1d18d1f956b3df5367765.pnghttps://i-blog.csdnimg.cn/blog_migrate/ed8e8b28b61dec88c6c4f199a5701cf9.png

显示user表中的记录:
https://i-blog.csdnimg.cn/blog_migrate/03bb2886f2996b6e285793278d5013b1.png
https://i-blog.csdnimg.cn/blog_migrate/234ad0b074c6a9bc4fc80ba718faebad.png
https://i-blog.csdnimg.cn/blog_migrate/30f18e60d2e722a295bfb5c04664fc17.png
创建数据库aaa:
https://i-blog.csdnimg.cn/blog_migrate/0a0ff99731c5f299c5af233624723471.png

创建表:
创建表并使得创建表person,表中有id、xm(姓名)、xb(性别)、csny(出生年代)等信息。
https://i-blog.csdnimg.cn/blog_migrate/c59d9ebfa05159e972b5cb428eec2891.png
打印对应的信息:
https://i-blog.csdnimg.cn/blog_migrate/69ccfded56303751cc5270dd4e3e40fa.png

增加对应的记录:
https://i-blog.csdnimg.cn/blog_migrate/dbc0c6b034e3042210c0406a6568ca25.png
由于设置了id自增,所以对应的增加的信息会自动的加入到下一个列表之中。
使用select命令查看插入是否乐成:
https://i-blog.csdnimg.cn/blog_migrate/a3af470488e1a70aa1771a3e281885bc.png

修改数据库中的信息:
https://i-blog.csdnimg.cn/blog_migrate/ca3f2ff5c6f38a90c304aa19bd205846.png
删除信息:
https://i-blog.csdnimg.cn/blog_migrate/0df973a7f6d97cdbe4089d1fb09d9275.png
删除对应的数据库以及表可以使用命令drop database+对应库名
drop table+对应表格
配置完成mysql数据库之后,开始配置接入hive数据库。
然后将mysql接入hive数据堆栈:
https://i-blog.csdnimg.cn/blog_migrate/1c94fe70e7f125bd9c37198021cf9977.png
然后配置答应mysql接入hive数据堆栈:
https://i-blog.csdnimg.cn/blog_migrate/d2333fe43f25032d08b5e3b5d5412441.png

然后可以开始启动hive数据堆栈:
不过启动之前先要启动hadoop。
https://i-blog.csdnimg.cn/blog_migrate/ffef0fb6f10e4c157f16787def4b74a4.png

启动完成之后就可以启动hive数据堆栈:
发现出现了题目:
https://i-blog.csdnimg.cn/blog_migrate/52df6bb9cdf7b807e5656885c9e52931.png
这时可以使用架构升级软件来进行版本的提拔适配:
但是还是出现了报错,这个时间必要修改对应的版本号来进行错误清除。
查看发现对应的hadoop和hive两个的版本号是不一样的。这个时间就可以将两个guava版本修改成一样的就可以了。
https://i-blog.csdnimg.cn/blog_migrate/f81cfd3a1d4e2fd76a13df9f5c5bc95c.pnghttps://i-blog.csdnimg.cn/blog_migrate/bda10c5cedc96becc1b0902b9415e66f.png
修改之后,再次启动hive。
不过还是报错。
https://i-blog.csdnimg.cn/blog_migrate/6c6c46c705f895a2f0e5558c4bae1e3c.png
这里的报错意思是hadoop现在在安全模式下,这个时间无法创建文件!!!
这个时间必要关闭hadoop的安全模式!!!!
https://i-blog.csdnimg.cn/blog_migrate/9433a03393aacebe760bd5625264c6ce.png
关闭之后,就可以重新启动hive,之后就可以重新进入hive进行编程。
https://i-blog.csdnimg.cn/blog_migrate/fb64e59afc7f48bfa14df84f6e15b318.png

 (二)了解Hive的基本数据范例。列出各种数据范例。
这里的hive基本数据范例有多种。
TINYINT
1B(8b)有符号整数
1
SMALLINT
2B(16b)有符号整数
1
INT
4B(32b)有符号整数
1
BIGINT
8B(64b)有符号整数
1
FLOAT
4B(32b)单精度浮点数
1.0
BOUBLE
8B(64b)双精度浮点数
1.0
STRING
字符串,可以指定字符串
“smu”
TIMESTAMP
整数、浮点数大概字符串
127383728193
BINARY
字节数组

BOOLEAN
布尔范例:true/false
true
同时还有Hive支持的聚集数据范例:
ARRAY
一组有序字段,字段范例必须相同
Array(1,2)
MAP
一组无序的键值对,键的范例必须是原子的,值可以是任何数据范例,同一个映射的健和值的范例必须相同
Map(‘a’,1,2)
STRUCT
一组命名的字段,字段的范例可以不同
Struct(‘a’,1,1,0)
(三)完成Hive的基本利用,参考8.3节。
然后开始hive的编程基本利用:
1.首先是创建数据库hive:,创建的指令与mysql数据库相似:
https://i-blog.csdnimg.cn/blog_migrate/0ef6490acce1427f2846d4139d88684a.png
2.创建表:必要在创建好的hive数据库中才创建一个表:
https://i-blog.csdnimg.cn/blog_migrate/c5b211a63d4239a0bf84548e094e67be.png
在hive中创建一个表的同时,还可以指定对应的路径进行表的创建。
https://i-blog.csdnimg.cn/blog_migrate/54612f045a812ad75df0d81f851cde41.png
固然,还可以在外部创建一个表,创建的这个表可以读取路径/usr/local/data下以”.”分割的数据。
https://i-blog.csdnimg.cn/blog_migrate/ff712b9f34b20eb1a6824cc5db404297.png
然后在hive数据库中创建分区表uerl,这个表通过复制usr表得到:
https://i-blog.csdnimg.cn/blog_migrate/49cecd0c553924adafb3dd96a34f863b.png

3.创建视图:
https://i-blog.csdnimg.cn/blog_migrate/c9d3d06227cce27791e198ec3564a7b5.png

之后是删除利用:
1.删除数据库:
https://i-blog.csdnimg.cn/blog_migrate/18a468184ddb984aa5f0617f3c149f1b.png
https://i-blog.csdnimg.cn/blog_migrate/33833b52b3e95b0da2fb6ef9b2ec0da5.png
这里的意思是说这个库中有其他的信息,必要将这些信息删除之后才可以删除库。
可以在代码中加入if exists代码,如果不存在也不会产生非常
固然,也可以在代码后面加上caseade,这样删除当前数据库和数据库中的表。
https://i-blog.csdnimg.cn/blog_migrate/d4359121f105935f73da1838ccdaca1a.png

2.删除表:
如果删除内部表,那么所有的信息都会被删除,如果是外部表,那么只会删除元数据而不会删除实际数据。
https://i-blog.csdnimg.cn/blog_migrate/804491c75edfd15528260cb7ed5777ea.png

3.删除视图:
https://i-blog.csdnimg.cn/blog_migrate/30d4fbd273419f9f478061842cd665d1.png

之后是修改数据库中的元素的利用:
1.修改数据库:
先创建一个数据库,然后在数据库中设置键值对属性进行利用。
https://i-blog.csdnimg.cn/blog_migrate/7974d182873f6d73e057b4629a855b5d.png
2.修改表:
重命名:
https://i-blog.csdnimg.cn/blog_migrate/d0f82a6b0788dafcd5b4df4895b9295f.png
为usr增加分区:

https://i-blog.csdnimg.cn/blog_migrate/5deddd9bd07a955acfb8feb40a668920.png
删除分区:
https://i-blog.csdnimg.cn/blog_migrate/9f2143f2e4db0293eedf9a6a20dab9f1.png

将usr表中的name修改为username,而且将name放在age之后
https://i-blog.csdnimg.cn/blog_migrate/ee958d8306eca017cf43ca14f3231643.png
在usr分区字段前面增加一个新的列sex:
https://i-blog.csdnimg.cn/blog_migrate/6bc21d5dedce3321240f2519742c3aa4.png

删除usr表中的所有字段之后重新定义字段:
https://i-blog.csdnimg.cn/blog_migrate/768163f831864bfe6696fa6a0be84598.png
描述对应的属性信息:
https://i-blog.csdnimg.cn/blog_migrate/8f2db6a3ceffd549c07335de45c3093d.png

3.修改视图:
首先创建一个a的表,然后将视图继承于这个表:
https://i-blog.csdnimg.cn/blog_migrate/65862e89f2bb02941bb7ef55dfdcd5fe.png
https://i-blog.csdnimg.cn/blog_migrate/df64af0ff1293939fd88f120a5efa7c4.png
然后修改视图
https://i-blog.csdnimg.cn/blog_migrate/fcf5ae85c5bb6e1f849dc951729f512f.png

之后是查看数据库、表、视图:
1.查看数据库:
https://i-blog.csdnimg.cn/blog_migrate/ef195581c11546024381fa62e75e91ee.png
2.查看表和视图:
https://i-blog.csdnimg.cn/blog_migrate/aa00c04a3d972a7c14ca0d2ae3c485cd.png

描述数据库、表、视图:
1.描述数据库基本信息:
https://i-blog.csdnimg.cn/blog_migrate/04ce383c1d593e2444cedcba23d8b6d9.png

查看数据库具体信息:
https://i-blog.csdnimg.cn/blog_migrate/0c584e254edb43460eeaeb72735ac57b.png

2.描述表和视图:
查看表usr和视图的基本信息:
https://i-blog.csdnimg.cn/blog_migrate/40bd902b7fdd193bdde78c8dafa005d3.png
https://i-blog.csdnimg.cn/blog_migrate/2e1393348d70eac5f750a2eb577202ce.png

查看具体信息:
https://i-blog.csdnimg.cn/blog_migrate/3230f60403db7ab684c19d5eaacb285f.png
https://i-blog.csdnimg.cn/blog_migrate/c45bcde7f29c078e4a68d39667eb1ae1.png

然后是查看usr列中的id信息:
https://i-blog.csdnimg.cn/blog_migrate/9d421233cb130cda4e454b88fcb65665.png

然后是向表中装载数据:
首先打开hive库,然后写入路径中的数据:
https://i-blog.csdnimg.cn/blog_migrate/4c9ca76f03865d1004e7ec196e732d63.png
 https://i-blog.csdnimg.cn/blog_migrate/481644da79fa9d519902545bf17ee21f.png

将HDFS路径下的数据文件装入表中而且覆盖原来数据:
https://i-blog.csdnimg.cn/blog_migrate/071e0f16fdf71360ce36b983b2b4db7a.png

导出数据:
首先创建一个新的分区表,然后创建一个新的表,让这个新的表继承这个分区表,
然后向新的分区表装载信息。
https://i-blog.csdnimg.cn/blog_migrate/9f8761bad9722cffe36a304dc8893f71.png
   https://i-blog.csdnimg.cn/blog_migrate/f38f9525ab97f5edb11b8a3115448d4e.png
然后导出信息:
https://i-blog.csdnimg.cn/blog_migrate/faf96ae6757f715e98201666b99aa970.png
https://i-blog.csdnimg.cn/blog_migrate/871119631240a6f42fe63eda17c4d11e.png
可以选择追加原有数据:
https://i-blog.csdnimg.cn/blog_migrate/ec90d2d40b86ad7ca8b8c13c11dc4bc1.png
https://i-blog.csdnimg.cn/blog_migrate/67c1e9dec80971f23c0e2058941dd444.png
https://i-blog.csdnimg.cn/blog_migrate/f520a33f2cfbbfdc5749c69db8814cc1.png
(四)在hive中实现wordcount。
创建一个input文件作为输入:
https://i-blog.csdnimg.cn/blog_migrate/da40389c05e7db6b890ace4028c77a77.png
进入这个文件夹之后创建两个文件:
https://i-blog.csdnimg.cn/blog_migrate/7b778343e8c013f08a2ed699f631204f.png
然后进入hive界面编写实现wordcount算法:
https://i-blog.csdnimg.cn/blog_migrate/4240ec054b0a2ff4387eacc28643baf2.png
https://i-blog.csdnimg.cn/blog_migrate/4b356f88980a388b4e2b58eecd354437.png
https://i-blog.csdnimg.cn/blog_migrate/231b4373a00a5c119304955be49b9622.png
之后使用select语句查看结果:
https://i-blog.csdnimg.cn/blog_migrate/fe0f9de439c34ee2af1569f8b4499e3c.png
4.思考题
(一)为什么要设计Hive?
1.在使用hive的时间,可以比mapreduce使用更少的代码量,在mapreduce中必要实现产生jar包,但是在使用hive的时间不必要使用jar包。用户不用实现具体的细节。
2. 大多数数据堆栈应用步伐都是使用关系数据库进行实现的,并使用SQL作为查询语言。Hive降低了将这些应用步伐转移到Hadoop体系上的难度。
3. 别的,相比其他工具,Hive更便于开发职员将基于SQL的应用步伐转移到Hadoop中。如果没有Hive,那么开发者将面临一个困难的挑战,怎样将他们的SQL应用步伐移植到Hadoop上。

(二)在hive中实现wordcount和直接写java步伐有什么区别和相似?
相似:
使用的时间与直接在java步伐中一样先要创建两个测试文件,也是必要进入到相同的目录和路径之下。
不同:
实现wordcount时hive已经将sql封装成mapreduce,简化了编写mapreduce的时间,相当于执行了两次mapreduce。但是使用java编写的时间,将会调用各种包,之前还必要进行各种包的导入以及代码的编写,远远没有wordcount便利轻便。
5.实验结论或体会
1.实验的时间,必要事先安装好mysql,下载的时间如果速率太慢,可以更换对应的下载网站。
2.在安装好hive而且想要启动的时间,有大概会报错。这里必要留意,可以使用架构升级软件来进行版本的提拔适配:
但是还是出现了报错,这个时间必要修改对应的版本号来进行错误清除。
查看发现对应的hadoop和hive两个的版本号是不一样的。这个时间就可以将两个guava版本修改成一样的就可以了。
https://i-blog.csdnimg.cn/blog_migrate/ff66c5bacc33b12558c1ed8bfb2033ed.pnghttps://i-blog.csdnimg.cn/blog_migrate/236e3e9ded4084bb98f49badf10cb4f0.png
修改之后,再次启动hive。
不过还是报错。
https://i-blog.csdnimg.cn/blog_migrate/acdf64d2be3014c34ccd51007f85751b.png
这里的报错意思是hadoop现在在安全模式下,这个时间无法创建文件!!!
这个时间必要关闭hadoop的安全模式!!!!
https://i-blog.csdnimg.cn/blog_migrate/be2861e2cca153073b1f685ca4065ca3.png
关闭之后,就可以重新启动hive,之后就可以重新进入hive进行编程。
https://i-blog.csdnimg.cn/blog_migrate/3997cb2fcec702de8e9974ab17eb8620.png
3.发起每次使用hive的时间,启动hadoop的时间必要启动hadoop的安全模式。进行删除数据库的时间,必要匹配对应的路径才可以。
4.必要留意路径有中文符号的题目。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 云计算技能 实验八 数据堆栈Hive的安装和使用