Hive关于数据表的增删改(内部表、外部表、分区表、分桶表 & 数据类型、分隔符类型)

建表

基本语句格式

CREATE [external] TABLE if not exists student #默认建立内部表,加上external则是建立外部表

(id int COMMENT'学号',sname string COMMENT'用户名',age int COMMENT'年龄')#字段名称,字段类型,字段描述信息 COMMENT '记录学生学号'#表的描述信息

PARTITION BY (department string COMMENT'根据部门分区')#设定分区的字段名称,此字段为全新字段,不得是表中任意字段;

clustered BY (id,age)#指定分桶的字段,此字段必须来自表中字段;

sorted BY (id ASC, age DESC)#指定一个桶内的排序规则(按照id升序,按照年龄降序);

INTO 9 buckets #指定桶的个数为9

ROW FORMAT delimited fields terminated BY '\t' #指定逗号为列分隔符

collection items terminated by ',' #集合中的元素间的分隔符

map keys terminated by ':' #元素内部的分隔符

lines terminated BY '\n'#指定换行符为行分隔符

stored AS textfile #指定最终表数据的存储格式,默认是textfile,还可以是rcfile(行列结合的格式)/parquet(压缩格式)

location '/user/student' #指定hive上表在hdfs上的存储路径,默认的是配置路径下

 

1.内部表

CREATE TABLE if not exists student(id int ,sname string ,age int) 
ROW FORMAT delimited FIELDS terminated BY ','
LINES terminated BY '\n';

 

2.外部表

CREATE external TABLE if not exists student(id int ,sname string ,age int) 
ROW FORMAT delimited FIELDS terminated BY ','
LINES terminated BY '\n' 
location '/user/student';

注意:

建外部表之后,若是从HDFS上加载数据的话(本质上是移动数据),会将数据从原路径移动到建表的路径下,

若两者路径不一致,则会导致其他部门的代码无法获取到数据,

因此,建立外部表的时候一定要location路径,且该路径与数据的原路径保持一致,

否则࿰

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值