Hive基本操作

Hive基本操作

HiveQL是Hive的查询语言,和SQL比较相似,对Hive的操作都是通过编写HiveQL语句来实现的。


基本操作

1、create:创建数据库、表、视图

(1)创建数据库

①创建数据库 hive:

hive>create database hive;

②创建数据库hive,因为hive 已经存在,所以会批出异常,加上if not exists 关键字,则不会拋出异常:

hive>create database if not exists hive;

(2)创建表

① 在hive 数据库中,创建usr 表,含3个属性 id、name 和 age:

hive>use hive;
hive>create table if not exists usr(id bigint, name string, age int);

② 在hive 数据库中,创建 usr 表,含3个属性 id、name 和 age,存储路径为 “usr/ocal/hive/warehouse/hive/usr":

hive>create table if not exists hive.usr(id bigint, name string, age int)
	>location'/usr/local/hive/warehouse/hive/usr';

③ 在hive 数据库中,创建外部 ust 表,含3个属性 id、name 和 age,可以读取路径“/usr/local/data”下以“,”分隔的数据:

hive>create external table if not exists hive.usr(id bigint, name string, age int)
	>row format delimited fields terminated by ','
	>Location'/usr/local/data";

④ 在hive 数据库中,创建分区 usr 表,含3个属性 id、name 和 age,还存在分区字段sex:

hive>create table hive.usr(id bigint, name string, age int) partitioned by (sex boolean);

⑤ 在hive 数据库中,创建分区 usr1 表,它通过复制 usr 表得到:

hive>use hive;
hive>create table if not exists usr1 like usr;

(3)创建视图

创建视图 little_usr,只包含表usr 中id 和 age 属性:

hive>create view little_usr as select id, age from usr;

2、drop:删除数据库、表、视图

(1)删除数据库

①删除数据库 hive,如果不存在会出现警告:

hive>drop database hive;

②删除数据库 hive,因为有 if exists 关键字,即使不存在也不会抛出异常:

hive>drop database if exists hive;

③删除数据库 hive,加上 cascade 关键宇,可以删除当前数据库和该数据库中的表:

hive>drop database if exists hive cascade;

(2)删除表

删除 usr 表,如果是内部表,元数据和实际数据都会被删除;如果是外部表,则只删除元数据,不删除实际数据:

hive>drop table if exists usr;

(3)删除视图

删除视图 little_ usr:

hive>drop view if exists little_usr;

3、alter:修改数据库、表、视图

(1)修改数据库

为 hive 数据库设置 dbproperties 键值对属性值来描述数据库属性信息:

hive>alter database hive set dbproperties ('edited-by'='lily');

(2)修改表

①重命名usr 表为 user :

hive>alter table usr rename to user;

② 为 usr 表增加新分区:

hive>alter table usr add if not exists partition(sex=true);
hive>alter table usr add if not exists partition(sex=false);

③删除 usr 表中分区:

hive>alter table usr drop if exists partition(sex=true);

④ 把 usr 表中列名 name 修改为 username,并把该列置于age列后:

hive>alter table usr change name username string after age;

⑤ 在对 usr 表分区字段之前,增加一个新列 sex:

hive>alter table usr add columns (sex boolean);

⑥删除 usr 表中所有字段并重新指定新字段 newid、newname 和 newage:

hive>alter table usr replace columns(newid bigint, newname string, newage int);

⑦为 ust 表设置tblproperties 键值对属性值来描述表的属性信息

hive>alter table usr set tblproperties('notes'='the columns in usr may be null except id');

(3)修改视图

修改 little_usr 视图元数据中的tblproperties 属性信息:

hive>alter view little_usr set tblproperties('create_at'='refer to timestamp');

4、show:查看数据库、表、视图

(1)查看数据库

① 查看 Hive 中包含的所有数据库:

hive>show databases;

② 查看 Hive 中以h开头的所有数据库:

hive>show databases 1ike'h.*';

(2)查看表和视图

① 查看数据库 hive 中所有表和视图:

hive>use hive;
hive>show tables;

② 查看数据库 hive 中以u开头的所有表和视图:

hive>show tables in hive 1ike'u.*';

5、describe:描述数据库、表、视图

(1)描述数据库

①查看数据库 hive 的基本信息,包括数据库中文件位置信息等:

hive>describe database hive;

② 查看数据库 hive 的详细信息,包括数据库的基本信息及属性信息等:

hive>describe database extended hive;

(2)描述表和视图

① 查看usr 表和视图 little_usr 的基本信息,包括列信息等:

hive>describe hive.usr;
hive>describe hive.little_usr;

② 查看 usr 表和视图 little_usr 的详细信息,包括列信息、位置信息、属性信息等:

hive>describe extended hive.usr;
hive>describe extended hive.little_usr;

③ 查看 usr 表中列id 的信息:

hive>describe extended usr.id;

6、load:向表中装载数据

①把目录’/usr/local/data’下的数据文件中的数据装载进 usr 表并覆盖原有数据:

hive>load data local inpath'/usr/local/data'overwrite into table usr;

②把目录’/usr/local/data’下的数据文件中的数据装载进 usr 表不覆盖原有数据:

hive>load data local inpath'/usr/local/data'into table usr;

③ 把分布式文件系统目录 hdfs://master_server/usr/local/data 下的数据文件数据装载进usr并覆盖原有数据:

hive>load data inpath'hdfs://master_server/usr/local/data'overwrite into table usr;

7、select:查询表中数据

该命令和 SQL 语句完全相同这里不赘述。

8、insert:向表中插入数据或从表中导出数据

①向 usr1 表中插人来自 usr 表的数据并覆盖原有数据:

hive>insert overwrite table usr1
	>select * from usr where age=10;

② 向 usr1 表中插人来自usr 表的数据并追加在原有数据后:

hive>insert into table usr1
	>select * from usr where age=10;
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Hive是一个基于Hadoop的数据仓库工具,用于进行大规模数据分析和查询。下面是Hive的一些基本操作命令: 1. 使用命令`show databases;`可以查看当前所有的数据库。 2. 使用命令`CREATE DATABASE park;`可以创建一个名为park的数据库。实际上,创建数据库相当于在Hadoop的HDFS文件系统中创建了一个目录节点,统一存在`/usr/hive/warehouse`目录下。 3. 使用命令`USE park;`可以进入park数据库。 4. 使用命令`show tables;`可以查看当前数据库下的所有。 5. 使用命令`CREATE TABLE stu (id INT, name STRING);`可以创建一个名为stu的,其中包含id和name两个字段。在Hive中,使用的是STRING类型来示字符,而不是CHAR或VARCHAR类型。所创建的实际上也是HDFS中的一个目录节点。默认情况下,所有在default数据库下创建的都直接存在`/usr/hive/warehouse`目录下。 6. 使用命令`INSERT INTO TABLE stu VALUES (1, 'John');`可以向stu中插入数据。HDFS不支持数据的修改和删除,但在Hive 2.0版本后开始支持数据的追加,可以使用`INSERT INTO`语句执行追加操作Hive支持查询和行级别的插入,但不支持行级别的删除和修改。实际上,Hive操作是通过执行MapReduce任务来完成的。插入数据后,我们可以在HDFS的stu目录下发现多了一个文件,其中存储了插入的数据。因此,可以得出结论:Hive存储的数据是通过HDFS的文件来存储的。 7. 使用命令`SELECT id FROM stu;`可以查询stu中的数据,并只返回id字段的值。 需要注意的是,如果想在HDFS目录下自己创建一个分区,并在该分区下上传文件,需要执行一些额外的操作。首先,手动创建的分区在Hive中是无法使用的,因为原数据库中没有记录该分区的信息。要让自己创建的分区被识别,需要执行命令`ALTER TABLE book ADD PARTITION (category = 'jp') LOCATION '/user/hive/warehouse/park.db/book/category=jp';`。这条命令的作用是在原数据book中创建对应的分区信息。另外,还可以使用命令`ALTER TABLE book****** 'nn');`来修改分区。 希望以上信息能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChlinRei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值