赞
踩
1.实验目的
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数据定义操作,这为我之后的实验提供了坚实的基础,我会更加认真地对待之后的实验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。