hive 修改字段类型_Hive分区

▌一、Hive分区简介

▎【1.1】为什么要分区?

随着系统运行时间的增加,表的数据量会越来越大,而Hive查询数据的数据的时候通常使用的是「全表扫描」,这样将会导致大量不必要的数据进行扫描,从而查询效率会大大的降低。 从而Hive引进了分区技术,使用分区技术,「避免Hive全表扫描,提升查询效率」

分区是:

将整个表的数据在存储时划分成多个子目录来存储(子目录就是以分区名来名称)

分区是有一定规则:

根据业务来,通常就是使用 年,月,日,地区等

▎【1.2】分区技术

 partitioned by(分区名 数据类型)

Hive根据字段进行分区,并且分区是「区分大小写的」,但是该字段是一个「伪列」(可以查询,不存储实际的值)

一张表中可以有一个或多个分区,分区下面可以有一个或多个分区,理论分区最多8级。

▎【1.3】Hive中的分区和MySQL中的分区有什么区别?

Hive中的分时是使用的表外字段,MySQL使用的是表内字段

▎【1.4】Hive的分区种类

  • 静态分区:「加载数据」的时候指定分区的值
  • 动态分区:数据未知,根据分区的值确定建立分区
  • 混合分区:静态+动态
在表创建的时候都是一样的,如何区分是静态还是动态还是混合呢?只有在赋值的时候才会决定使用是那种分区

▌二、Hive三种分区

▎【2.1】静态分区

▏建立一级分区

 create table if not exists part1
 (
     uid int,
     uname string,
     uage int
 )
 partitioned by(country string) //用于分区的字段,并不会出现在表中
 row format delimited fields terminated by 't';

user_china.txt里面的数据的字段和part1里面的字段相同,并没有country字段

 //在加载的过程中,指定加载到china分区,这是静态分区的特点
 load data local inpath '/root/user_china.txt' into table part1 partition(country='china');
 load data local inpath '/root/user_japa
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值