内部表的操作:
一开始就要先打开Hadoop集群,后面所有的操作都是在打开Hadoop集群的前提下进行的:
cd /opt/hadoop-3.1.4/sbin
./start-dfs.sh
./start-yarn.sh
./mr-jobhistory-daemon.sh start historyserver
jps
首先为了方便,先cd到hive安装路径的lib目录中,或者使用pwd可以查看当前目录的路径,然后打开hive进行操作:
cd /usr/local/hive/lib
pwd
hive

但是不知道为什么我的hive不能够直接这样打开,不管是不是在lib目录下:

然后我发现必须先切换到conf目录下重新更新一下profile文件,然后初始化metastore才可以成功打开,并且必须启动元数据服务,否则在打开hive以后输入命令会报错,具体操作如下:
cd /usr/local/hive/conf
source /etc/profile
schematool -dbType mysql -initSchema
hive --service metastore &
hive

然后这里的初始化会展示schemaTool failed是因为我最开始已经建立了hive表,所以会报错,所以不用管,接下来输入hive正常打开就好了:

进入hive之后可以使用命令查看一下目前有哪些databases,并创建一个名为train的数据库:
show databases;
create database train;

再次查看一下数据库是否成功创建,并使用use调用该数据库:
show databases;
use train;

调用数据库train之后,再创立名为person的表:
create table person(
id int,
name string,
age int)
row format delimited fields terminated by ',';
然后可以查看一下train数据库的描述:
desc database train;

接下来往数据库train中的person表上传数据,使用xftp上传到opt目录下,如图:

其中person.txt的内容如图:

然后新开一个xshell的窗口,依旧连接master主机,用于查看上传是否成功,这一步省略也可以,不开窗口查看也可以:

然后回到原本的窗口,在hive下使用dfs命令把在opt文件夹里面的person.txt文件上传到train数据库的person表格中:
dfs -put /opt/person.txt /user/hive/warehouse/train.db/person;

然后可以在网页中进行查看:

也可以选择使用命令进行查看:
select * from person;

可以做一些设置,如果想要看到每个字段的表头信息,可以使用如下命令:
set hive.cli.print.header=true;
select * from person;

试用下面的命令可以看到当前操作使用的数据库的名字:
set hive.cli.print.current.db=true;
select * from person;

hive中外部表的操作:
先创建一个外部表名为external_table:
create external table external_table(
id int,
name string,
age int)
row format delimited fields terminated by ','
location '/user/root/external/external_person';

然后就是加载数据到外部表,即将person.txt的内容加载到外部表external_table中,并进行查看:
dfs -put /opt/person.txt /user/root/external/external_person;
select * from external_table;

也可以在网页中查看:

然后查看一下外部表和内部表的区别,先查看一下 两个表格,然后对表格进行删除:
show tables;
drop table person;
drop table external_table;
show tables;
最后一次show可以看见,两个表都被删除了,然后到50070页面中查看:

在50070中:


所以我们发现使用drop删除内部表是真的完全被删除了。而删除外部表,只是删除了元数据,真实的数据依旧存在HDFS的系统上面。

本文档详细介绍了在Hadoop集群上操作Hive的步骤,包括启动Hadoop服务,初始化Hive metastore,创建并管理数据库和表,上传及查询数据。还对比了内部表和外部表的删除差异,强调了外部表删除仅移除元数据,数据仍保留在HDFS上。
3059

被折叠的 条评论
为什么被折叠?



