1. Hive数据仓库的操作
1.在Hive中创建一个数据仓库,名为DB。
create database DB;
2.以上简单创建了一个DB库,但是这条sql可以更进一步的优化,我们可以加上if not exists。
create database if not exists DB;
解析:在创建库时,应避免新建的库名与已有库名重复,如果库名重复将会报出以下错误(我在已有DB库的前提下,再次创建了DB库)。
错误提示数据仓库DB已经存在, 那么加入的if not exists就起了作用,如下(在已有DB库的前提下,再次创建DB库,提示成功不会报错)
加入if not exists的意思是如果没有DB库就创建,如果已有就不再创建。
3.查看数据仓库DB的信息及路径。
describe database DB;
4.删除名为DB的数据仓库。
drop database if exists DB;
2. 数据表的操作
Hive的数据表分为两种:内部表和外部表。
Hive创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据,生产中常使用外部表。
下面详细介绍对表操作的命令及使用方法:
即将创建的表,表名不能和已有表名重复,否则会报错,现在我们show tables一下,查看已存在的表。
show tables;
现在库中没有表。
2.1.创建一个名为cat的内部表,有两个字段为cat_id和cat_name,字符类型为string。
create table cat(cat_id string,cat_name string);
查看是否创建成功。
show tables;
下面我们再次创建一个与刚才表名相同的表,看一下报错。
create table cat(cat_id string,cat_name string);
提示错误,该表已经存在!说明表与库一样,名称不能重复,解决方法是加入if not exists。
2.2.创建一个外部表,表名为cat2,有两个字段为cat_id和cat_name,字符类型为string。
create external table if not exists cat2(cat_id string,cat_name string);
查看是否创建成功。
show tables;
外部表较内部表而言,只是在create后加了一个external。
2.3.修改cat表的表结构。对cat表添加两个字段group_id和cat_code。
alter table cat add columns(group_id string,cat_code string);
使用desc命令查看一下加完字段后的cat表结构 。
desc cat;
2.4.修改cat2表的表名。把cat2表重命名为cat3 。
alter table cat2 rename to cat3;
这个命令可以让用户为表更名,数据所在的位置和分区名并不改变。
2.5.删除名为cat3的表并查看。
drop table cat3;
show tables;
2.6.创建与已知表相同结构的表,创建一个与cat表结构相同的表,名为cat4,这里要用到like关键字。
create table cat4 like cat;
创建完成并查看结果。
show tables;