Hive表入门--Hive表概述

一. Hive表建表语法

create [external] table [if not exists] 表名(字段名 字段类型 , 字段名 字段类型 , … )
[partitioned by (分区字段名 分区字段类型)] # 分区表固定格式
[clustered by (分桶字段名) into 桶个数 buckets] # 分桶表固定格式 注意: 可以排序[sorted by (排序字段名 asc|desc)]
[row format delimited fields terminated by ‘字段分隔符’] # 自定义字段分隔符固定格式
[stored as textfile] # 默认即可
[location ‘hdfs://node1.itcast.cn:8020/user/hive/warehouse/库名.db/表名’] # 默认即可
; # 注意: 最后一定加分号结尾

注意: 关键字顺序是从上到下从左到右,否则报错

二. 数据类型

基本数据类型:
1.整数int
2.小数:float double
3.字符串:string varchar(长度)
4.日期:date timestamp

复杂数据类型:
1.array:集合
2.map:映射
3.struct:结构体
4.union:联合体

三. 表分类

Hive中可以创建的表有好几种类型,分别是:
内部表:managed_table
外部表:external_table
分桶表
分区表

这几种表之间的关系:
内部表(管理表): MANAGED_TABLE
分区表—分桶表
分桶表
外部表(非管理表): EXTERNAL_TABLE
分区表—分桶表
分桶表

内部表和外部表里面可以有分区表和分桶表,分区表中也可以有分桶表,但是分桶表中不能有分区表。
因为分区表的本质是分目录。分桶表的本质是分文件,后续还会详细对比两者。

default默认库存储路径:
—>hdfs://node1.itcast.cn:8020/user/hive/warehouse

自定义库在HDFS的默认存储路径:
—>hdfs://node1.itcast.cn:8020/user/hive/warehouse/库名.db

自定义表在HDFS的默认存储路径:
—>hdfs://node1.itcast.cn:8020/user/hive/warehouse/库名.db/表名

业务数据文件在HDFS的默认存储路径:
—>hdfs://node1.itcast.cn:8020/user/hive/warehouse/库名.db/表名/业务数据文件

[重点]内部表和外部表的区别

1.创建表关键字
未被external关键字修饰的即是内部表, 即普通表,内部表又称管理表,还可以叫托管表。
被external关键字修饰的即是外部表, 即关联表,还可以叫非管理表或非托管表。

2.对存储数据有无控制权
内部表对存储数据有绝对控制权,所以使用drop table删除表的时候存储数据会随着元数据一起被删除。
而外部表对存储数据没有控制权,所以使用drop table删除表的时候元数据被删除,存储数据会被保留。
再次建表后,可以使用location重新关联原来hdfs保留的业务数据

3.清空表操作
内部表可以使用关键字truncate清空表存储数据。
外部表则没有该操作。

4.复制表操作
内部表在复制表的时候可以使用as select语句复制表结构和表数据。
而外部表不能使用该语法,外部表只能使用like语法复制表结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值