hive对数据库及对表的操作

本文详细介绍了Hive对数据库(创建、查看、删除、切换)和表(内部表、外部表、数据导入导出、复杂数据类型、文件存储格式、查看信息、修改、删除、清空、分区表、分桶表、视图和关联操作)的操作,涵盖了从基本概念到实际操作的各个方面,是Hive使用的重要参考。
摘要由CSDN通过智能技术生成

提示:文章内容很详细,案例仅供参考!

目录

前言

一.Hive对库的操作

1.创建库

2.查看库

3.删除库

         4.切换库

二.Hive对表的操作

1.内部表与外部表

2.数据的导入导出

3.Hive的复杂数据类型

4.Hive的文件存储格式

5.查看表信息

6.修改表

7.删除和清空表

8.Hive的分区表

8.1分区表的创建

8.2导入数据到分区

8.3增删分区

8.4动态分区

9.Hive的分桶表

9.1分桶的概念

9.2分桶操作

10. 视图

11 Hive的表关联操作

11.1 join操作

11.2笛卡尔积(略)

11.3 union和union all

总结


前言

    文章由Hive对库的操作和Hive对表的操作两部分组成。


一.Hive对库的操作

1.创建库

先打开node01,进入hive

  代码:hiveserver2

代码:beeline -u 'jdbc:hive2://192.168.67.110:10000' -n root

 (1)简单方式

代码:create database t2;

           show databases;

(2)创建库的时候带注释

代码:create database if not exists t2 comment 'learning hive';

           desc database extended t2;

(3)创建带属性的库。

代码:create database if not exists t2 with dbproperties('creator'='hadoop','date'='2022-10-21');

          desc database extended t2;

2.查看库

(1)最常用查看库方式。

代码:show databases;

(2)显示数据库的详细属性信息。

代码:desc database t2;

       desc database extended t2;

(3)查看正在使用哪个库。

代码:select current_database();

 代码: use t2;

            select current_database();

3.删除库

默认情况下,hive 不允许删除包含表的数据库。需要使用cascade 关键字。

代码:drop database if exists t2 cascade;

           show databases;

4.切换库

切换到t2数据库。

代码:use t2;

          select current_database();

二.Hive对表的操作

1.内部表与外部表

(1)内部表

表目录hive会自动创建在默认的HDFS目录下/user/hive/warehouse/…。

代码:create table worker_1(id int,name string,salary bigint,addr string)

           row format delimited

           fields terminated by ‘,’;

(2)外部表

创建的时候,需要使用external关键字,并指定表对应hdfs上的目录/aa/bb。

代码:create external table worker_2(id int,name string,salary bigint,addr string)

          row format delimited

          fields terminated by ‘,’

          location ‘/worker’;

drop一个内部表时,表的元信息和表数据目录都会被删除。

drop一个外部表时,只删除表的元信息,表的数据目录不会被删除。

     外部表的意义

     通常,一个数据仓库系统,数据总有一个源头,而源由一般是别的应用程序产生的,其目录无法确定,为了方便映射,就可以在hive中用外部表映射。并且,就算hive中把这个表删了,也不会删除数据目录,就不会影响到别的应用系统。

2.数据的导入导出

(1)导入

将hive服务器运行所在节点的本地磁盘上的文件导入表中。

注意:

这里load的文件是在开启server的节点上。不是在客户端节点上。

我们编辑的数据如果有中文,必须得是UTF-8编码格式,否则数据会出现乱码现象。

load data local inpath '/usr/datadir/worker_1.txt' into table worker_1;

加overwrite可以实现覆盖,不加overwrite是追加到表后面。

load data local inpath ‘/usr/datadir/worker_1.txt’ overwrite into table worker_1;

将hdfs上的文件导入表中。

上传文件到HDFS。

load data inpath '/worker_2' into table worker_2;

 会发现hdfs上的/worker_2被移动到表目录下。

  加local是复制,不加是移动。

从别的表查询数据后插入到一张新建的表中。表会自动生成。

create table worker_3

as

select id,name,salary

from worker_2

where salary>=5000;

可以看到我们写的HQL被转化为MapReduce程序运行。

从别的表查询数据后插入到一张已经存在的表中。表已经存在。

insert into table worker_1

select id,name,salary,addr

from worker_2

where salary>=4000;

into替换为overwrite,会覆盖掉原表得数据。

(2)导出

将数据从hive的表中导出到hdfs的目录中

insert overwrite directory ‘/worker_dir’

select * from worker_1;

将数据从hive的表中导出到本地磁盘的目录中

insert overwrite local directory ‘/usr/datadir/worker.log’

select * from worker_1;

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值