Hive的数据模型

HiveHDFS
目录
分区目录
数据文件
文件

一、内部表

介绍

最简单的一种表,相当于Mysql、Oracle中的表
只是将数据保存到Hive自己的数据仓库中hive/warehouse/
每个表在hive中都有一个对应的目录存储数据,当删除此表时,元数据和数据都将会被删除

1.创建

和Mysql等数据库一样的创建流程,最后一行表示设置分割符为,以便于载入csv文件

create table emp(
id int,
name string,
job string,
department int
)
row format delimited fields terminated by ',';

2.插入

insert语句

INSERT INTO emp (id, name, job, department) 
VALUES (1, 'John Doe', 'Engineer', 101);

3.载入

load语句,可以导入csv文件
文件处于本地磁盘中(不在hdfs中)

load data local inpath '/root/tools/01.csv' into table emp;

在这里插入图片描述

上传后的文件将会保存在如下的hdfs路径中
在这里插入图片描述

文件处于Hdfs中

load data inpath '/input/01.csv' into table emp;

导入之后相当于执行剪切操作,即将此文件移动到hive/warehouse/emp的目录下

二、分区表

概念
在这里插入图片描述

create table emp_part(
id int,
name string,
job string
)
partitioned by (department int)
row format delimited fields terminated by ',';

插入语句

INSERT INTO TABLE emp_part PARTITION (department = 101)  
VALUES (1, 'John Doe', 'Engineer');  

以下为查询效果
在这里插入图片描述
HDFS中的存储
在这里插入图片描述

三、外部表

和内部表类似,在元数据的组织上相同,区别仅在于数据保存在HDFS中,Hive不会将其转移到数据仓库的目录内(/user/hive/warehouse),而是与这个数据建立一个链接,并且允许创建分区,当删除一个外部表时,仅删除链接

CREATE EXTERNAL TABLE emp_part_external(  
    id int,  
    name string,  
    job string  
)  
PARTITIONED BY (department int)  
ROW FORMAT DELIMITED  
FIELDS TERMINATED BY ','  
LOCATION '/input/emp_part_external';

数据存储于hdfs的/input/emp_part_external目录下,并且此表已经设置了分区

四、桶表

对数据进行哈希取值,存储在不同的文件中,类似于hash分区
在这里插入图片描述
以下为创建代码,将根据部门进行“分桶”

CREATE TABLE emp_bucketed(  
    id int,  
    name string,  
    job string,  
    department int  
)  
CLUSTERED BY (department) INTO 10 BUCKETS  
ROW FORMAT DELIMITED  
FIELDS TERMINATED BY ',';

hdfs中的存储文件
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无奈ieq

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

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

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

打赏作者

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

抵扣说明:

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

余额充值