摸鱼大数据——Hive表操作——分区表

news2024/11/20 19:42:57
1、介绍

特点: 分区表会在HDFS上产生目录。查询数据的时候使用分区字段筛选数据,可以避免全表扫描,从而提升查询效率
注意: 如果是分区表,在查询数据的时候,如果没有使用分区字段,它回去进行全表扫描,会降低效率

只需要记住一点,分区表是用来提升Hive的数据分析效率

2、一级分区
创建分区表: create [external] table [if not exists] 表名称(字段名称1 字段数据类型,字段名称2 字段数据类型..) partitioned by (分区字段 字段数据类型);
​
自动生成分区目录并插入数据: load data [local] inpath '文件路径' into table 表名称 partition (分区字段=值);
​
注意: 如果使用load导入数据,没有写local,文件路径就是HDFS上的路径。否则就是linux的路径

示例:

use day06;
​
-- 1- 创建分区表
create table one_part_tb(
    id int,
    name string,
    price double,
    num int
) partitioned by (year int)
row format delimited fields terminated by ' ';
​
​
-- 2- 通过load将HDFS中的文件导入到Hive表中
load data inpath '/source/order202251.txt' into table one_part_tb partition (year=2022);
load data inpath '/source/order202351.txt' into table one_part_tb partition (year=2023);
load data inpath '/source/order202352.txt' into table one_part_tb partition (year=2023);
load data inpath '/source/order2023415.txt' into table one_part_tb partition (year=2023);
​
-- 3- 数据验证
select * from one_part_tb;
​
-- 4- 使用分区
select * from one_part_tb where year=2022;
​
-- 5- 如果没有指定分区,那么会进行全表扫描,拖慢了效率
select * from one_part_tb where price>=20;

3、多级分区
创建分区表: create [external] table [if not exists] 表名称(字段名称1 字段数据类型,字段名称2 字段数据类型..) partitioned by (分区字段1 字段数据类型,分区字段2 字段数据类型...);
​
自动生成分区目录并插入数据: load data [local] inpath '文件路径' into table 表名称 partition (分区字段1=值,分区字段2=值....);
​
注意: 如果使用load导入数据,没有写local,文件路径就是HDFS上的路径。否则就是linux的路径

示例:

use day06;
​
-- 1- 创建多级分区表
create external table multi_pat_tb(
    id int,
    name string,
    price double,
    num int
) partitioned by (year string,month string,day string)
row format delimited fields terminated by ' ';
​
-- 2- 加载HDFS数据到Hive表中
load data inpath '/source/order202251.txt' into table multi_pat_tb partition (year="2022",month="5",day="1");
load data inpath '/source/order202351.txt' into table multi_pat_tb partition (year="2023",month="5",day="1");
load data inpath '/source/order202352.txt' into table multi_pat_tb partition (year="2023",month="5",day="2");
load data inpath '/source/order2023415.txt' into table multi_pat_tb partition (year="2023",month="4",day="15");
​
-- 3- 数据验证
select * from multi_pat_tb;
​
-- 4- 使用分区
-- 注意: 如果是多分区,使用分区来提升效率的时候,需要根据需求来决定到底使用几个分区。并不需要所有的分区都用到
-- 需求:要对2023全年的销售情况进行分析
select * from multi_pat_tb where year="2023";
-- 需求:要对2023年5月整个月的销售情况进行分析
select * from multi_pat_tb where year="2023" and month="5";
select * from multi_pat_tb where year="2023" and month="5" and day="2";
​
-- 5- 不使用分区
select * from multi_pat_tb where price>=20;

4、分区操作
添加分区: alter table 分区表名 add partition (分区字段1=值,分区字段2=值..);
​
删除分区: alter table 分区表名 drop partition (分区字段1=值,分区字段2=值..);
​
修改分区名: alter table 分区表名 partition (分区字段1=旧分区值,分区字段2=旧分区值..) rename to partition (分区字段1=新分区值,分区字段2=新分区值..);
​
查看所有分区: show partitions 分区表名;
​
同步/修复分区: msck repair table 分区表名;
​
注意: 如果删除内部表的分区,那么对应的HDFS分区目录也被删除了;如果删除外部表的分区,那么对应的HDFS分区目录还保留着

示例:

use day06;
​
-- 查询表的分区信息
show partitions one_part_tb;
show partitions multi_pat_tb;
​
-- 添加分区
alter table one_part_tb add partition (year=2024);
-- 如果是多级分区,那么添加分区的时候,需要将所有的分区都添加上
alter table multi_pat_tb add partition (year="2024");
alter table multi_pat_tb add partition (year="2024",month="1",day="1");
​
-- 修改分区
alter table one_part_tb partition (year=2024) rename to partition (year=2000024);
​
-- 删除分区
-- 注意:如果删除内部表的分区,那么对应的分区目录也被删除了;如果删除外部表的分区,那么对应的HDFS分区目录还保留着
alter table one_part_tb drop partition (year=2000024);
alter table multi_pat_tb drop partition (year="2024",month="1",day="1");
​
-- 修复分区
-- 在执行下面的语句之前,需要手动去/user/hive/warehouse/day06.db/one_part_tb路径下创建一个year=2025分区目录
msck repair table one_part_tb;

给多级分区表添加分区遇到的错误:

原因: 如果是多级分区,那么添加分区的时候,需要将所有的分区都添加上

修改分区效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1707225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(1)

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 哈希函数与哈希 之 闭散列的线性探测解决哈希冲突 的相关内容。 如…

【Elasticsearch】Centos7安装Elasticsearch、kibana、IK分词

目录 本文安装包下载地址注意安装elasticsearch1.上传文件2.解压elasticsearch-6.3.1.tar.gz3.开启远程连接权限4.修改其他配置[root用户操作]5.重启虚拟机6.启动es7.外部访问 安装kibana-61.解压2.配置3.启动kibana4.访问5.在开发工具中做数据的增删改查操作 安装IK分词1.wind…

vue3(一):Vue3简介、创建vue3工程、Vue3中的响应式

目录 一.Vue3简介 1.性能提升 2.源码升级 3.拥抱ts 4.新特性 (1)Composition API(组合API): (2)新的内置组件: (3)其他改变: 二.创建vue…

iOS推送证书过期处理

苹果推送证书的有效期都是一年,将要过期的时候,苹果官方会发邮件提醒。 一、过期 在电脑上找到并打开其它->钥匙串访问; 我的证书可以看到各个App的推送证书,如果过期了,显示红色X 二、重新创建 1、登陆apple开…

智能高效的IDE GoLand v2024.1全新发布 - 进一步升级AI辅助工具

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议,通过一步撤消快速安全重构,智能代码完成,死代码检测和文档提示帮助所有 Go 开发人员,从新手到经验丰富的专业人士,创建快速、高效、和可靠的…

CAS原理技术

CAS原理技术 背景介绍结构体系术语接口原理基础模式1. 首次访问集成CAS Client的应用2. 再次访问集成CAS Client的同一应用3. 访问集成CAS Client的其他应用 代理模式1. 用户在代理服务器上执行身份认证2. 通过代理应用访问其他应用上授权性资源 背景 本文内容大多基于网上其他…

GitLab项目中添加用户,并设置其角色权限等

注意:创建用户(new user),创建完用户然后再项目邀请用户,选择创建过的用户 一、以管理员身份登录GitLab的WebUI并创建用户 1>.使用管理员登录GitLab 使用管理员(root)用户登录成功后,点击如下图所示的小扳手,点击…

废品回收小程序:回收市场下的商业机遇

随着当下大众环保意识的提升,回收行业收到了大众的重视,行业快速发展。在互联网信息技术的支持下,“互联网废品回收”得到了发展,依靠各种技术搭建互联网回收平台,连接到居民与商家,让回收变得更加简单高效…

小猪APP分发:让你的应用轻松上架,免费分发

你是否曾经因为应用无法顺利上架而烦恼?或者,刚刚开发好的应用找不到一个合适的平台进行分发?其实,这些问题都不再是问题,因为“小猪APP分发”来了! 每个开发者都希望自己的应用能够被更多的人下载和使用&…

抖店怎么选品?抖店爆款选品思路技巧,新手直接用!

大家好,我是电商花花。 抖店选品永远是我们做抖店,做电商的核心,店铺想要出单,想要赚钱,我们就一定要学会怎么选品,怎么筛选商品。 而我们绝大多数新手并没有办法保证持续选爆款的能力,如果店…

2024年最新实景无人自动直播软件揭秘:降低成本,提升效率

在信息技术迅猛发展的时代,实景无人自动直播软件成为了各行各业的关注焦点。随着2024年的到来,最新的实景无人自动直播软件将以其降低成本、提升效率的特点引领行业。本文将揭秘这一创新软件的工作原理,并探讨其在各个领域的应用,…

简谈SUID提权

SUID提权 0x01什么是SUID ​ SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可…

【ARM+Codesys案例】T3/RK3568/树莓派+Codesys枕式包装机运动控制器

枕式包装机是一种包装能力非常强,且能适合多种规格用于食品和非食品包装的连续式包装机。它不但能用于无商标包装材料的包装,而且能够使用预先印有商标图案的卷筒材料进行高速包装。同时,具有稳定性高、生产效率高,适合连续包装、…

场景题11111

关单操作? 优先考虑定时任务、Redissonredis、RocketMQ延迟消息实现(订单量特别大的时候,不建议使用MQ) 每个订单都有一个消息会增加资源消耗可靠性问题(丢失)大量的无效消息不是所有消息队列都支持一般通…

轻兔推荐 —— vfox

简介 vfox 是一个跨平台且可扩展的版本管理工具,终于有一个可以管理所有运行环境的工具了 - 支持一键安装 Java、Node.js、Flutter、.Net、Golang、PHP、Python等多种环境 - 支持一键切换不同版本 特点 支持Windows(非WSL)、Linux、macOS! 支持不同项目不同版本、…

2、PHP 8.1.0-dev 后门远程命令执行漏洞复现

1、青少年ctf,题目PHP后门 2、页面 3、bp抓包发现PHP版本为8.1.0-dev 4、尝试使用以前爆出过的漏洞(网上查相关案例) User-Agentt: zerodiumvar_dump(5*5); User-Agentt: zerodiumsystem("cat /flag"); 5、查找flag User-Agentt: z…

OceanBase:列存储

目录 1、列存储的定义 1、默认创建列存表 3、指定创建列存表 4、指定创建列存行存冗余表 5、行、列存储查询测试 1、列存储的定义 行存储(Row-based Storage):行存储是以行为单位进行组织和存储数据。在这一模式下,数据库将…

第十八节:带你梳理Vue2: Vue组件中的注意事项和特例

1. Vue组件名推荐使用驼峰命名 现在我们来看看为什么在Vue中推荐注册组件时使用驼峰写法, 在了解这个之前,相信大家应该都能明白为什么在Vue中, 局部组件的使用频率高于全局组件. 推荐使用驼峰写法也是和局部组件有关系 我们先看一个示例 <div id"app"><…

JAVA云HIS医院系统源码 云HIS运维平台源码 融合B/S版电子病历系统,支持电子病历四级,saas模式

JAVA云HIS医院系统源码 云HIS运维平台源码 融合B/S版电子病历系统&#xff0c;支持电子病历四级&#xff0c;saas模式 HIS系统就是医院信息管理系统&#xff0c;HIS系统是整个医院信息化的核心&#xff0c;门诊、住院、药房、药库等都是由HIS系统来承载起来的&#xff0c;所以…

MATLAB | 儿童节一起来玩转MATLAB叭

hey, 儿童节要到啦&#xff0c;提前祝各位大朋友&#xff0c;小朋友儿童节快乐&#xff0c;本篇将会在前半部分给出一些有趣且简短的代码&#xff0c;在后半部分展示一下我准备的游戏大礼包里面的游戏效果&#xff0c;完整代码获取方式请见文末&#xff0c;让我们一起玩转MATLA…