实验3Hive数据操作

实验3Hive数据操作

实验目的及要求

  1. 了解Hive的基本操作。

  2. 了解Hive的内部表与外部表的区别。

  3. 掌握表中数据的导入和导出的方法。

实验系统环境及版本

  1. Linux Ubuntu 20.04

  2. JDK1.8

  3. Hadoop3.1.0

  4. MySQL8.0.28

  5. Hive3.1.2

实验任务

  1. Hive表中数据的导入和导出。

实验内容及步骤

  1. Hive数据的导入

  2. 从本地文件系统中导入数据到Hive表。

在Hive中创建一个test表,包含id和name两个字段,数据类型分别为Int和String,以“\t”为分隔符,并查看结果。

create table test(id int,name string)

row format delimited fields terminated by ‘\t’

stored as textfile;

实验3Hive数据操作_第1张图片

将Linux本地/opt/datas目录下的test.txt文件导入test表中:

load data local inpath ‘/opt/datas/test.txt’ into table test;

在这里插入图片描述

查看test表中是否成功导入数据:

select * from test;

在这里插入图片描述

将HDFS上的数据导入Hive中。

开启一个新终端,在HDFS上创建/myhive目录:

hdfs dfs -mkdir /myhive

在这里插入图片描述

将Linux本地/opt/datas目录下的文件test.txt文件上传到HDFS的/myhive中,并查看是否上传成功:

hdfs dfs -put /opt/datas/test.txt /myhive

hdfs dfs -ls /myhive
实验3Hive数据操作_第2张图片

在Hive中创建名为test1的表:

create table test1(id int,name string)

row format delimited fields terminated by ‘\t’

stored as textfile;

实验3Hive数据操作_第3张图片

将HDFS的/myhive中的数据文件test.txt导入Hive的test1表中,并查看结果:

load data inpath ‘/myhive/test.txt’ into table test1;

select * from test1;

实验3Hive数据操作_第4张图片

提示:HDFS中的数据导入Hive中与本地数据导入Hive中的区别是Load Data后少了Local关键字。

从其他表中查询出相应的数据并导入Hive中。

在Hive中创建一个名为test2的表:

create table test2(id int,name string)

row format delimited fields terminated by ‘\t’

stored as textfile;

在这里插入图片描述

用下面两种方法将test1表中的数据导入test2表中:

insert into table test2 select * from test1;

实验3Hive数据操作_第5张图片

insert overwrite table test2 select * from test1;

导入完成后,用select语句查询test2表:

select * from test2;

在这里插入图片描述

在创建表的同时从其他表中查询出相应数据并插入所创建的表中。

在Hive中创建表test3并直接从test2表中导入数据:

create table test3 as select * from test2;

实验3Hive数据操作_第6张图片

创建并导入完成后,用select语句查询结果:

select * from test3;

实验3Hive数据操作_第7张图片

创建表,并指定加载数据在HDFS中的其他位置。

在Hive中创建表test4:

create table if not exists test4(

id int,name string)

row format delimited fields terminated by ‘\t’

location ‘/user/hive/warehouse/test4’;

实验3Hive数据操作_第8张图片

开启一个新终端,上传数据到HDFS中:

hdfs dfs -put /opt/datas/test.txt /user/hive/warehouse/test4;

在这里插入图片描述

创建并导入完成后,用select语句查询结果:

select * from test4;

实验3Hive数据操作_第9张图片

Hive数据导出

导出到本地文件系统

将Hive中的test表数据导出到本地文件系统/opt/datas/output中,output目录在数据导出时自动创建,不用事先创建。

注意:该方法和导入数据到Hive不一样,不能用Insert Into来将数据导出:

insert overwrite local directory ‘/opt/datas/output’ select * from test;

实验3Hive数据操作_第10张图片

导出完成后,在Linux本地切换到/opt/datas/output目录,通过cat命令查询导出文件的内容:

cd /opt/datas/output

ls

cat 000000_0

实验3Hive数据操作_第11张图片

可以看到导出的数据,字段之间没有分隔开,所以使用下面的方式,将输出字段以“\t”键分隔:

insert overwrite local directory ‘/opt/datas/output’

select concat(id,‘\t’,name) from test;

实验3Hive数据操作_第12张图片

也可以使用下面的方式,将输出字段以“\t”键分隔:

insert overwrite local directory ‘/opt/datas/output’

row format delimited fields terminated by ‘\t’

select id,name from test;

通过cat命令查询/opt/datas/output目录下的导出文件:

cd /opt/datas/output/

cat 000000_0

在这里插入图片描述

Hive中数据导出到HDFS中

开启一个新终端,在HDFS中创建/myhive/output目录:

hdfs dfs -mkdir /myhive/output

在这里插入图片描述

将Hive表test中的数据导出到HDFS的/myhive/output目录中:

insert overwrite directory ‘/myhive/output/’

row format delimited fields terminated by ‘/t’

select id,name from test;

实验3Hive数据操作_第13张图片

导出完成后,在HDFS的/myhive/output目录下查看结果:

hdfs dfs -cat /myhive/output/*

在这里插入图片描述

导出到Hive的另一个表中

将Hive的表test中的数据导入test5表中(两表字段及字符类型相同)。

在Hive中创建一个表test5,有id和name两个字段,数据类型分别为Int和String,以“\t”为分隔符:

create table test5(id int,name string)

row format delimited fields terminated by ‘\t’

stored as textfile;

实验3Hive数据操作_第14张图片

将test表中的数据导出到test5表中:

insert into table test5 select * from test;

实验3Hive数据操作_第15张图片

导出完成后,查看test5表中数据:

select * from test5;

在这里插入图片描述

Export语句导出

Export语句可以将Hive表中的数据导出到Hadoop集群的HDFS的其他目录下:

export table test to ‘/user/hive/warehouse/export/test’;

在这里插入图片描述

导出完成后,在HDFS的/user/hive/warehouse/export/test目录下查看导出的数据:

hdfs dfs -cat /user/hive/warehouse/export/test/data/*

在这里插入图片描述

Hive Shell命令导出

在不启动Hive的情况下,也可以将HQL语句的查询结果存储在本地指定目录下的test1.txt文件中。

退出Hive:

quit;
在这里插入图片描述

切换到Hive的安装目录:

cd /opt/hive

在这里插入图片描述

执行查询:

bin/hive -e ‘select * from test;’> /opt/datas/test1.txt;

实验3Hive数据操作_第16张图片

开启一个新终端,切换到/opt/datas目录,查看test1.txt文件的内容:

cd /opt/datas

cat test1.txt

在这里插入图片描述

将HQL语句存储在执行脚本文件中

将执行脚本文件的执行结果存储在指定目录下的test2.txt2文件中。

创建hivef.sql脚本文件:

cd /opt/datas

vim hivef.sql

在这里插入图片描述

将HQL语句“select * from test;”保存其中,并退出。

切换到Hive的安装目录:

cd /opt/hive

执行hivef.sql脚本文件中的查询语句,并将查询结果输出到test2.txt文件中:

bin/hive -f /opt/datas/hivef.sql > /opt/datas/test2.txt

实验3Hive数据操作_第17张图片

开启一个新终端,切换到/opt/datas目录,查看test2.txt文件的内容:

cd /opt/datas

cat test2.txt
在这里插入图片描述

你可能感兴趣的:(hive,hadoop,大数据)