Hive的常规操作

Hive的常规操作

hive常用交互命令

-e执行sql语句

[root@master ~]# hive -e "show databases";

-e执行sql脚本

[root@master ~]# -f /usr/local/demo.sql

查看hive中输入的所有命令

[root@master ~]# ~/.hivehistory

操作库

1创建库

hive (default)>create database 库名称;

2.查看库

2.1查看所有数据库

hive (default)>show databases;

2.2查看数据库信息

hive (default)>desc database 数据库名称;

2.3查看数据库详细信息

hive (default)>desc database extended 数据库名称;

3.使用库

hive >use demo;

4.修改库

使用alter database命名为某个数据库的dbproperties设置键值对属性值。用于描述数据库的属性信息,数据库的其他数据信息无法更改,包括数据库所在目录地址。

hive (default)>alter database 数据库名称 set dbproperties('createtime'='20220620');

5.删除数据库

5.1删除空数据库

hive (default)>drop database demo(数据库名称) ;

5.2删除存在的数据库

hive (default)>drop database if exists 数据库名称;

5.3不为空的数据库

drop databdase 数据库名称 cascade;

操作表

创建表

语法:

creata[externa] table [if not exists] table_name
(col_name data_type)[comment col_commment]....[commentn table_comment]
[partitioned by (col_name data-type [comment col-comment]...)]
[cloustered by(col_name,col_name)]
[sorted by(col_name [asc|desc],...)into num_buckets bbuckets]
[stored hdfs_path]
[like]
  • creata table:

    • ​ 创建一个指定名称的表,如果相同的表存在,则抛出异常,用于可以使用if not exists选项忽略这个一场。
  • external:

    • ​ 关键字在创建一个外部表,在建表的同时指定一个指向数据的路径location,hive创建内部表时,会将数据移动到数据仓库指向的路径:如果创建外部表,仅记录数据所在的路径,不会对数据的位置做任何改变,在删除表时,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
  • commnet

    • 为表和列添加注释
  • ​ partitioned by

    • 创建分区表
  • ​ cloustered by

    • 创建分桶表
  • ​ sorted by

    • 桶内排序
  • ​ stored as

    • 指定存储文件类型,常见的类型有二进制文件(sequencefile),文本(txtfile),列式存储格式文件(rcfile), 如果文本数据是纯文本,可以使用stored as textfile。如果需要压缩存储,可以使用stored as sequencefile
  • location

    • 指定表在hdfs上的存储位置
  • like

    • 允许用户复制现有的表结构,但不是复制数据。
1.创建分区表
hive(demo)>creata table if not exists demo_tab_01(colume01 string);
          >partitioned by (colume02 string)
          >row format delimited
          >fields terminated by '\t';
2.创建外部表
hive(demo)>create external table if exists demo_tab_02(id int,name string)
          >row format delimited fields terminated by '\t';
3.删除数据表
hive(demo)>drop table student;

修改表

1.修改内部表为外部表
hive(demo)>alter table demo_tab_01 set tblproperties('exterual'='true');
2.修改外部表为内部表
hive(demo)>alter table demo_tab_01 set tblproperties('exterual'='false');
3.重命名表
hive(demo)>alter table demo_tab_01 rename to demo_new_tab_01; 
4.添加字段信息
hive(demo)>alter table demo_tab_02 add columns(age int);
5.修改字段信息
hive(demo)>alter table demo_tab_02 change column id new_id string;
6.替换列

不会修改存储在hdfs中的数据,只是修改元数据的列而已。如果hdfs存储的是string,如果列replace列为int,则查不到对于的数据。

hive(demo)>alter table demo_tab_02 replace columns (age int);

删除表

1.删除表

hive(demo)>drop table demo_new_01(表名);

2.清空表

只能清空管理表,不能清空外部表

hive(demo)>truncate table demo_new_01;

分区表

概念

分表实际上是对于一个HDFS文件系统上的独立系统,改文件夹是该分区所有的数据文件。hive中的分区就是分目录,把一个大的数据集切割成多个小的数据集,在查询是可以 通过where选定的分区查询对应的数据。

操作

1.创建分区表
hive(demo)>creata table if not exists demo_tab_01(colume01 string)
          >partitioned by (colume02 string)
          >row format delimited
          >fields terminated by '\t';
2.查看分区信息
hive(demo)>show partitins demo_tab_01;
3.查看分区表结构
hive(demo)>desc formatted demo_tab_01;
4.查看分区数据
hive(demo)>select*from demo_tab_o1;
hive(demo)>select*from demo_tab_01 where colume02;
5.增加单个分区
hive(demo)>alter table demo_tab_01 add partition(colume01 ='yyyy');
6.增加多个分区
hive(demo)>alter table demo_tab_01 add partition(colume01 ='yyyy')partition(colume01 ='hhhh')partition(colume01 ='xxxx');
7.删除单个分区
hive(demo)>alter table demo_tab_01 drop partition (colume='yyyy');
8.删除多个分区
hive(demo)>alter table demo_tab_01 drop partition (colume='yyyy') partition (colume='hhhh') partition (colume='xxxx');
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值