大数据基础平台——Hive数据定义操作

1.实验目的

  1. 掌握Hive的数据库操作;
  2. 掌握Hive的数据表基本操作;
  3. 了解与熟悉Hive的存储格式和行格式;
  4. 了解与熟悉Hive中常用的数据类型;
  5. 了解与熟悉Hive外部表的基本操作。

2.实验内容及结果截屏

(1)数据库操作

①创建数据库

使用CREATE DATABASE [IF NOT EXISTS] <数据库名>语句创建数据库test1:

 创建数据库test2,使用LOCATION语句指定对应HDFS上的/user/hive/test2文件夹:

②描述数据库

使用DESCRIBE DATABASE <数据库名>语句描述数据库test1,显示的信息包括数据库名称(db_name)、注释(comment)、存储位置(location)、所有者(owner_name)等:

③列出数据库

使用SHOW DATABASES [LIKE '<正则表达式>']语句列出所有(满足正则表达式的)数据库:

④当前数据库

使用USE <数据库名>设置当前数据库:

⑤删除数据库

使用DROP DATABASE [IF EXISTS] <数据库名> [CASCADE]语句删除数据库test2:

(2)数据表基本操作

①创建数据表

使用CREATE TABLE [IF NOT EXISTS] <表名>语句创建数据表flights用于存储航班数据集:

②描述数据表

使用DESCRIBE [FORMATTED] <表名>语句描述数据表flights:

使用FORMATTED关键词以表格形式显示数据表的额外信息:

 

③列出数据表

使用SHOW TABLES [LIKE '<正则表达式>']语句列出所有(满足正则表达式的)数据表:

④删除数据表

使用DROP TABLE [IF EXISTS] <表名>语句删除表flights:

 ⑤从查询结果创建数据表

⑥拷贝表结构

使用CREATE TABLE [IF NOT EXISTS] <新表名> LIKE <原表名>语句拷贝flights.flights14表结构创建数据表flights,并不拷贝数据:

 (3)存储格式和行格式

①文本存储格式

在创建表flights时,使用STORED AS TEXFILE语句表示存储为文本文件:

 文本文件都是可读的明文,使用dfs -cat命令显示文件内容:

②行格式

使用ROW FORMAT语句设置行格式:

 使用dfs -cat命令显示文件内容:

 

使用org.apache.hadoop.hive.serde2.OpenCSVSerde序列化和反序列化器,设置行格式为以指定字符分隔的列,达到使用DELIMITED关键词相同的效果:

 使用dfs -cat命令显示文件内容:

 

③二进制存储格式

使用STORED AS SEQUENCEFILE语句表示存储为压缩的序列文件:

 

 使用dfs -cat命令显示文件内容:

 

 (4)数据类型

①字符串

输入字符串时,可以使用单引号'或双引号":

 如果输入的字符串中包含引号,则需要通过反斜杠\转义:

②日期时间

时间戳(TIMESTAMP)的形式为<年(4位)>-<月(2位)>-<日(2位)> <小时(2位)>:<分钟(2位)>:<秒(2位)>。

输入时间戳时,需要在前面加上timestamp关键词:

 时间戳支持从UNIX时间戳的数值型转换得到:

日期(DATE)的形式为<年(4位)>-<月(2位)>-<日(2位)>,而不包含时间部分。

输入日期时,需要在前面加上date关键词:

对于包含复杂数据类型且行格式是以指定字符分隔的形式的表,还需要进一步在建表语句中指定复杂数据类型中元素的分隔符以及字典中键值对的分隔符:

 

新启动一个终端,使用echo命令写入若干行测试数据到文件complex.csv:

 回到beeline所在的终端,使用LOAD DATA语句导入该文件:

 (5)外部表

使用EXTERNAL关键词创建外部表flights,并使用LOCATION语句指定表的数据文件路径为/user/root/flights14文件夹:

 

此时由于表flights对应的数据文件路径并没有任何数据,因此无法选取出任何数据:

 使用dfs -cp命令将数据文件复制到外部表flights对应的数据文件路径:

 此时则可以查询到数据:

 使用DROP TABLE语句删除外部表flights:

 使用dfs -ls查看原来的表flights对应的数据文件路径/user/root/flights14:

 3.实验分析及小结

       通过此次实验,我对Hive的数据库操作和数据表基本操作有了一定掌握,同时了解了Hive的存储格式和行格式、常用的数据类型和外部表的基本操作。

       在实验过程中,由于完全按照教程操作,我没有遇上什么问题,只有在使用LOAD DATA语句导入complex.csv时,无法找到complex.csv。随后询问了舍友,在另一个终端中打开了hive并操作了一下,再回到beeline所在终端进行操作,便不再报错了。

 

       此外,在使用DROP TABLE语句删除外部表flights后,我又查询了表flights对应的数据文件路径,得到了图中所示的结果,先前的数据全都变成了NULL。

 

       此次实验教会了我Hive数据定义操作,这为我之后的实验提供了坚实的基础,我会更加认真地对待之后的实验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱桃小叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值