当前位置: 首页 > article >正文

Hive:静态分区(分区语法,多级分区,分区的查看修改增加删除)

hive在建表时引入了partition概念。即在建表时,将整个表存储在不同的子目录中,每一个子目录对应一个分区。在查询时,我们就可以指定分区查询,避免了hive做全表扫描,从而提高查询率。

oracle和Hive分区的区别

orcale在进行表分区时不需要定义分区字段的数据类型,Hive需要,因为oracle分区时用的是表内字段,Hive在分区时用的是表外字段

分区的注意事项 

hive 中,分区字段名是不区分大小写的,不过字段值是区分大小写的

示例(一级分区,即分区时只有一个字段)

表里面只有2个字段(id和name) ,dt 是用来辅助分区的

导入数据

导入数据后查看

导入第二个分区的数据后查看

查询指定分区的数据

在oracle中使用where的时候是全盘扫描,但是Hive是局部扫描, 因为分区相当于一个目录

 

示例: part1表中的2个分区dt=2025-01-01和dt=2025-01-02

多级分区

分区时有多少个字段就是多少级分区

表中只有2个字段,另外2个是伪列, 是用来进行分区的

加载数据

加载数据后查看表

导入时month=01查询时变成1,是因为没有引号默认按照数值处理,省略了0

查看分区

示例

注意: year和month分区的层级关系, month是year的下一级目录,删掉year=2025分区后,2025下一级分区的month=1和month=2也是被删掉的

修改分区

即修改分区的数据来源, 下次访问该分区时映射修改后的路径数据

示例

修改分区

原本的数据还在原来的位置, 所以修改分区只是下次访问该分区时映射的不是原本的目录,映射修改后的路径数据

 

增加分区

3 ) 新增多分区
新增多个空分区, 通过show partitions 表名  查看是否新增分区成功
新增多个带数据的分区
注意: 新增分区(带数据)只是改变了映射

删除分区

示例  

删除表part2的分区year=2025 month=01后目录还在是因为之前有修改过分区的映射

删除未修改过分区映射的分区

删除分区时,分区下面的目录也会被删除


http://www.kler.cn/a/526321.html

相关文章:

  • Nuxt:利用public-ip这个npm包来获取公网IP
  • 图论——floyd算法
  • 一文讲解Java中的异常处理机制
  • 【C语言】在Windows上为可执行文件.exe添加自定义图标
  • 【编译原理实验二】——自动机实验:NFA转DFA并最小化
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.30 性能巅峰:NumPy代码优化全攻略
  • 无公网IP 外网访问 本地部署夫人 hello-algo
  • 【赵渝强老师】K8s中Pod探针的TCPSocketAction
  • 新年手搓--本地化部署DeepSeek-R1,全程实测
  • Pandas进行MongoDB数据库CRUD
  • 题海拾贝:二叉树遍历
  • 【愚公系列】《循序渐进Vue.js 3.x前端开发实践》028-组件Props属性的高级用法
  • 文件上传2
  • vue3第三部分--组件通信
  • 【2024年华为OD机试】 (C卷,100分)- 最大括号深度(Java JS PythonC/C++)
  • python开发,最好的环境是什么
  • ThreadLocal源码解析
  • 5.3.2 软件设计原则
  • [JavaWeb]搜索表单区域
  • Windows11暂停自动更新
  • (二)PosrgreSQL: Python3 连接Pgvector出错排查
  • 巴塞尔问题详解:计算所有正整数平方的倒数之和
  • DeepSeek R1本地部署详细指南
  • Java 性能优化与新特性
  • [OO ALV] OO ALV 基础显示
  • allegro修改封闭图形线宽