大数据Hive--分区表和分桶表

一、分区表

1.1 分区表

Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多。

1.1.1 分区表基本语法

1.1.1.1 创建分区表
create table dept_partition
(
    deptno int,    --部门编号
    dname  string, --部门名称
    loc    string  --部门位置
)
    partitioned by (day string)
    row format delimited fields terminated by '\t';
1.1.1.2 分区表读写数据

1)写数据

load

在/opt/module/hive/datas/路径上创建文件dept_20220401.log,并输入如下内容

[yudan@hadoop102 datas]$ vim dept_20220401.log

10	行政部	1700
20	财务部	1800
load data local inpath '/opt/module/hive/datas/dept_20220401.log' 
into table dept_partition 
partition(day='20220401');

insert

将day='20220401’分区的数据插入到day='20220402’分区,可执行如下装载语句

insert overwrite table dept_partition partition (day = '20220402')
select deptno, dname, loc
from dept_partition
where day = '2020-04-01'

2)读数据

查询分区表数据时,可以将分区字段看作表的伪列,可像使用其他字段一样使用分区字段。

select deptno, dname, loc ,day
from dept_partition
where day =</
### Hive内部分区表的概念及其实现 #### 分区表的核心概念 Hive中的分区表是一种用于优化大数据查询的技术。它通过将数据按照某个或某些列的值划为不同的子集,从而使得查询操作更加高效[^2]。这种技术允许用户仅加载特定条件下的数据,而不是扫描整个格的内容。 #### 动态区功能 为了支持更灵活的数据插入方式,Hive引入了动态区的功能。启用此功能需要设置参数`hive.exec.dynamic.partition=true`[^1]。这样,在向分区表中插入数据时,Hive可以根据实际数据内容自动生成对应的区路径并保存数据[^3]。 #### 创建分区表的具体方法 以下是创建一个基于日期字段(`day`)进行区的的例子: ```sql CREATE TABLE dept_partition ( deptno INT, -- 部门编号 dname STRING, -- 部门名称 loc STRING -- 部门位置 ) PARTITIONED BY (day STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; ``` 上述SQL语句定义了一个名为`dept_partition`的,并指定了按字符串类型的`day`字段进行区[^4]。 #### 向分区表写入数据的方式 对于已经创建好的分区表,可以通过多种方式进行数据填充。其中一种常见的方式是使用`LOAD DATA`命令直接导入文件到指定的区目录下;另一种则是利用`INSERT INTO ... PARTITION (...) SELECT ... FROM ...`结构完成复杂场景下的数据迁移工作。 #### 使用分区表的优势析 采用区策略不仅有助于加快查询速度,还便于日常维护以及实施长期存档计划等方面的工作。当面对海量记录集合时,合理设计区方案往往能带来显著效益改进效果[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值