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

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;

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

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

修改分区效果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

positivessl泛域名证书500元13个月

随着创建网站的门槛变低,不论是个人用户还是企事业单位用户创建的域名网站也越来越多,怎么维护网络环境的安全成为了各个用户需要解决的问题。为了保护网站的数据安全,防止恶意攻击和数据泄露,大多数用户选择为域名网站安装数字证…

Laravel 图片添加水印

和这个配合使用 Laravel ThinkPhP 海报生成_laravel 制作海报-CSDN博客 代码 //水印 $x_length $imageInfo[0]; $y_length $imageInfo[1];$color imagecolorallocatealpha($posterImage, 255, 255, 255, 70); // 增加透明度参数alpha$font_size 40; //字体大小 $angle …

YOLOv10涨点改进:如何魔改注意力进行二次创新,高效替换PSA | NEU-DET为案列进行展开

💡💡💡本文改进:替换YOLOv10中的PSA进行二次创新,1)EMA替换 PSA中的多头自注意力模块MHSA注意力;2) EMA直接替换 PSA; 在NEU-DET案列进行可行性验证,1&#x…

WebGIS 智慧城市三维可视化综合管控

智慧城市可视化建设不仅提升了城市管理的科技含量和效率,还促进了城市可持续发展,提升了居民的生活质量。随着技术的不断发展和应用,智慧城市可视化建设将会更加丰富和完善,为城市发展带来更加广阔的前景。 图扑应用自研 HT for W…

Linux一键安装Docker、kkfileviewer

Linux一键安装Docker、kkfileviewer 一、安装docker 安装docker脚本 vi initDocker.sh脚本内容 #安装前先更新yum,防止连接镜像失败 yum -y update#卸载系统之前的docker(可选择,我这里直接注释了) #yum remove docker docker…

mybatis新增到数据库后返回当前ID

描述 在开发中,插入一条数据并返回当前的ID的场景很多 之前用mybatisPlus自带的api非常简单,调用完save or insert之后再getId即可。 今天使用mybatis的时候也遇到了这个场景,在此记录一下。 解决问题 直接再insert标签里面表明属性 核心…

数据挖掘与机器学习——回归分析

目录 回归分析定义: 案例: 线性回归 预备知识: 定义: 一元线性回归: 如何找出最佳的一元线性回归模型: 案例: python实现: 多元线性回归 案例: 线性回归的优缺…

抖店重磅新规!保证金下调,一张营业执照能开多个店铺了!

哈喽~我是月月 抖音平台为助力小商家实现开店低成本,轻负担,高收益的模式 在5月30日正式实施了两个政策:保证金下调,一证多开 政策一:保证金下调 这次政策,涉及的类目优惠包含了,平台近70%的…

假暴力,cf1168B. Good Triple

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1168B - Codeforces 二、解题报告 1、思路分析 一眼没思路&#xff0c;打个暴力试试 因为如果 s[l, r] 是一个好字符串&#xff0c;那么s[i, r]一定也是好字符串&#xff0c;其中i < l 那么…

【Mongo】索引结构

结论 Mongo3.2版本开始&#xff0c;索引的结构默认是B树。 起因 面试的时候&#xff0c;面试官问为什么Mongo DB底层使用B树而不是B树&#xff1f; 面试完赶紧恶补&#xff0c;结果发现面试官好像给我埋了个坑。。。 MongoDB官方描述&#xff1a; 翻译一下就是&#xff1…

Java 类加载机制解密一探到底

类加载是 Java 程序在运行期执行之前的重要环节&#xff0c;它决定着程序的运行效率和稳定性。本文将为您深入剖析 Java 类加载机制的整个生命周期&#xff0c;揭开神秘面纱&#xff0c;让您彻底掌握这一核心知识点。 一、类的生命周期概述 类的生命周期在Java中指的是从类被加…

【全开源】CMS内容管理系统源码(ThinkPHP+FastAdmin)

基于ThinkPHPFastAdmin的CMS内容管理系统&#xff0c;自定义内容模型、自定义单页、自定义表单、专题、统计报表、会员发布等 提供全部前后台无加密源代码和数据库私有化部署&#xff0c;UniAPP版本提供全部无加密UniAPP源码。 ​构建高效内容管理的基石 一、引言&#xff1a…

数据结构—队列(C语言实现)

文章目录 前言一、队列的概念二、队列的实现Queue.hQueue.c 三、设计循环队列问题数组实现链表实现 总结 前言 嗨喽喽&#xff01;&#xff01;小伙伴们&#xff0c;大家好哇&#xff0c;欢迎来到我的博客&#xff01; 今天将要分享的是另一种数据结构—队列&#xff0c;以及…

迈向F5G-A,开启全光万兆新时代——南通移动完成全市首个50G-PON技术验证

近日&#xff0c;南通移动在崇川区完成全市首个50G-PON万兆技术现网验证&#xff0c;标志着南通成为首批具备F5G-A(The 5th GenerationFixed Network-advanced)的万兆光网城市&#xff0c;使其成为网速最快、覆盖最全、时延最低的城市之一。 作为全光万兆的关键技术&#xff0c…

计算机图形学入门01:概述

1.什么是图形学? The use of computers to synthesize and manipulate visual information. 图形学是合成和操纵视觉信息的计算机应用。 百度百科&#xff1a;计算机图形学(Computer Graphics&#xff0c;简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格…

深入解析MySQL 8中的角色与用户管理

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 深入解析MySQL 8中的角色与用户管理 前言角色和用户的基础概念用户&#xff08;User&#xff09;…

一个基于预训练的DenseNet121模型的人脸年龄分类系统

这篇文章采用预训练的DenseNet121模型并使用自定义的数据集类和自定义的类似正态分布的标签平滑策略来训练了一个人脸年龄分类模型&#xff0c;最后基于这个模型用tk实现了一个娱乐向的小系统。 数据集展示&#xff1a; 两个文件夹&#xff0c;分别是训练集和测试集&#xff0…

光伏组件积灰检测系统

光伏组件积灰检测系统是一种专门用于监测光伏组件表面灰尘积累情况的设备。以下是关于该系统的详细信息和特点&#xff1a; 系统概述 光伏组件积灰检测系统安装在光伏板的框架上&#xff0c;通过实时监测光伏组件表面的灰尘厚度、分布情况和清洁度&#xff0c;为运维人员提供…

深入分析 Android Activity (五)

文章目录 深入分析 Android Activity (五)1. Activity 的进程和线程模型1.1 主线程与 UI 操作1.2 使用 AsyncTask1.3 使用 Handler 和 Looper 2. Activity 的内存优化2.1 避免内存泄漏2.2 使用内存分析工具2.3 优化 Bitmap 使用 3. Activity 的跨进程通信&#xff08;IPC&#…