1.实验目的
- 了解与熟悉Hive的数据导入操作;
- 了解与熟悉Hive的数据插入操作;
- 了解与熟悉Hive的数据导出操作。
2.实验内容及结果截屏
(1)数据导入
①从本地文件系统导入数据表
使用CREATE TABLE语句创建数据表flights用于存储航班数据集:
使用LOAD DATA LOCAL INPATH '<数据文件路径>' INTO TABLE <表名>语句将本地文件系统中的数据文件/opt/data/flights/flights14.csv导入表flights:
②从HDFS导入数据表
重新创建数据表flights:
新启动一个终端,使用hdfs dfs -put命令将数据文件flights14上传到HDFS:
使用LOAD DATA INPATH '<数据文件路径>' INTO TABLE <表名>语句将HDFS中的数据文件/user/root/flights14.csv导入表flights:
该语句仅仅是将数据文件在HDFS上从原路径移动到Hive表对应的路径下:
使用dfs -ls命令原数据文件统计信息:
③导入并覆盖
由于表flights中已经有数据,如果不使用OVERWRITE关键词则会在原有数据基础上添加新导入数据:
使用dfs -ls命令显示表flights对应文件夹的统计信息:
使用OVERWRITE关键词导入并覆盖,将仅保留新导入数据:
使用dfs -ls命令显示表flights对应文件夹的统计信息:
④导入分区表
使用CREATE TABLE ... PARTITIONED BY ...语句创建分区表flights,其中分区列为load_date:
数据导入时,使用PARTITION关键词指定导入的分区:
(2)数据插入
①基本插入
使用CREATE TABLE语句创建数据表flights用于存储航班数据集:
使用INSERT INTO TABLE <表名> <查询语句>语句将查询结果插入表flights,查询结果为简单选取flights.flights14表中的所有数据:
②插入并覆盖
由于表flights中已经有数据,如果不使用OVERWRITE关键词则会将新导入数据与原有数据按行合并:
使用dfs -ls命令显示文件夹统计信息:
使用INSERT OVERWRITE语句插入并覆盖,将仅保留新插入数据:
使用dfs -ls命令显示文件夹统计信息:
③插入分区表
使用CREATE TABLE ... PARTITIONED BY ...语句创建分区表flights,其中分区列为year和month:
数据插入时,使用PARTITION关键词指定导入的分区:
使用SHOW PARTITIONS语句显示分区表flights的分区:
④动态插入分区表
在动态插入分区表前,需要先设置动态分区模式、是否允许动态分区:
使用INSERT ... PARTITION ...语句插入分区表:
使用SHOW PARTITIONS语句显示分区表flights的分区:
(3)数据导出
①导出到本地文件系统
使用INSERT OVERWRITE LOCAL DIRECTORY '<导出路径>'语句将表flights.flights14导出到本地文件系统中的数据文件路径/root/tmp/flights:
使用head命令查看导出数据文件的前几行:
数据导出时使用ROW FORMAT将示分隔符设为逗号:
使用head命令查看导出数据文件的前几行:
②导出到HDFS
使用INSERT OVERWRITE DIRECTORY '<导出路径>'语句将表flights.flights14导出到HDFS上的的数据文件/user/root/flights:
使用hdfs dfs -cat命令查看导出数据文件的前几行:
3.实验分析及小结
在此次实验过程中,我了解了Hive的数据导入操作、数据插入操作以及数据导出操作。由于步步紧跟指导,我的实验过程十分顺利,没有遇上许多问题,仅仅发生了一些粗心问题。在之后的实验中,我会更加细心地对待,尽可能减少此类错误。