文档章节

Hive - truncate partition、drop partition 区别

ericquan8
 ericquan8
发布于 2015/12/19 23:04
字数 447
阅读 667
收藏 2
点赞 0
评论 0

Hive 有两种方法删除指定parition的数据:truncate partition, drop parition

功能:

两者都用于删除数据,即将对应的partition的数据文件删除。


不同点:

truncate 只删除数据文件,保存在mysql中的metadata不会被删除。

drop partition 只删除数据文件且删除在mysql中的metadata。


举例:

表food的结构:

id     bigint
name   string


数据文件,food.data:

1    banana
2    orange
3    apple
4    nutz


导入food.data后查询, select * from food:

输出:

1    banana    20151219
2    orange    20151219
3    apple     20151219
4    nutz      20151219


现在想给food添加一列price: 

ALTER TABLE food ADD COLUMNS (price int);

表结构变成:

id    bigint
name  string
price int


并且把food.data对应位置多加一列:

1    banana    20
2    orange    30
3    apple     30
4    nutz      40


删除旧的数据(drop partition)

TRUNCATE TABLE food PARTITION (dt='20151219');


重新导入包含price信息的food.data,再查询:

1       banana  NULL    20151219
2       orange  NULL    20151219
3       apple   NULL    20151219
4       nutz    NULL    20151219

可见,虽然表格的结构和数据文件都已经有price的信息,但导入后,hive并没有识别出price这列。原因是hive中metadata中没有price的信息。 drop partition只是删除数据文件,并没有删除metadata中的信息。


show partitions food 看看,输出结果:

dt=20151219

证明truncate删除后,分区信息还没有删除。


用drop partition再试一次:

ALTER TABLE food DROP IF EXISTS PARTITION (dt='20151219');

这时show partitions food, 'dt=20151219' 的分区已经被删除。


重新导入包含price信息的food.data,再查询:

1    banana  20      20151219
2    orange  30      20151219
3    apple   30      20151219
4    nutz    40      20151219


总结:

truncate删除分区,只删除数据文件,parttion的信息还保留在配置的mysql中;drop partition删除分区,数据文件和metadata一起清除。

以后大家就根据实际情况选择使用了。


© 著作权归作者所有

共有 人打赏支持
ericquan8
粉丝 6
博文 16
码字总数 16612
作品 0
广州
程序员
分区表维护

背景: SENDCONTROLHIS1分区表存在大量无用数据,虽不影响性能,但可以删除部分分区节省存储空间。 --查表空间有哪些对象 select owner,segmentname,segmenttype,partition_name,bytes/1024...

zylhsy ⋅ 2016/09/03 ⋅ 0

hive 分区(partition)简介

网上有篇关于hive的partition的使用讲解的比较好,转载了: 一、背景 1、在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,...

xrzs ⋅ 2012/10/08 ⋅ 0

Greenplum -- 最全分区表操作

一、Greenplum 分区原理 分区表意思是将一个大表在物理上分割成几块,GPDB中的分区表和PostgreSQL中实现原理一样,都是用过表继承、约束来实现。但是与PostgreSQL也有所不同,在PostgreSQL中...

朱飞东 ⋅ 2017/12/22 ⋅ 0

对现有Hive的大表进行动态分区

分区是在处理大型事实表时常用的方法。分区的好处在于缩小查询扫描范围,从而提高速度。分区分为两种:静态分区static partition和动态分区dynamic partition。静态分区和动态分区的区别在于...

Zero零_度 ⋅ 2016/07/07 ⋅ 0

Hive sql语法详解2

Hive sql语法详解2-修改表结构 hive同样也面对传统数据库的一些操作,那么hive 1.如何增加分区、删除分区? 2.如何重命名表? 3.如何修改列的名字、类型、位置、注释? 4.如何增加/更新列? 5.如...

超人学院 ⋅ 2014/11/26 ⋅ 0

Oracle分区修改的语句

Oracle分区修改的语句 1、增加一个分区 ALTER TABLE sales ADD PARTITION jan96 VALUES LESS THAN ( '01-FEB-1999' ) TABLESPACE tsx; 增加一个列表分区 ALTER TABLE q1salesby_region ADD P......

李狗蛋丶 ⋅ 2016/11/05 ⋅ 0

oracle分区索引和全局索引总结

分区索引就是在所有每个区上单独创建索引,它能自动维护,在drop或truncate某个分区时不影响该索引的其他分区索引的使用,也就是索引不会失效,维护起来比较方便,但是在查询性能稍微有点影响...

zxf261 ⋅ 2012/06/03 ⋅ 0

hive修改已经存在的表

修改已经存在的表: alter table Alter table 语句允许用户改变现有表的结构。用户可以增加列/分区,表本身重命名。 1) 增加分区 Add Partitions: ALTER TABLE tablename ADD partitionspec ...

超人学院 ⋅ 2015/05/12 ⋅ 0

Hive 环境搭建

一、安装hive的机器上要有hadoop的环境 hadoop集群搭建参考博客地址 https://my.oschina.net/xiaozhou18/blog/787902 二、现在机器上安装mysql数据库 用来存储hive的元数据信息 命令如下 rp...

xiaozhou18 ⋅ 2016/11/26 ⋅ 0

hive 的判断条件(if、coalesce、case)

CONDITIONAL FUNCTIONS IN HIVE Hive supports three types of conditional functions. These functions are listed below: IF( Test Condition, True Value, False Value ) The IF conditio......

jilson ⋅ 2015/08/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 18分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 26分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 44分钟前 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 59分钟前 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

centos7下创建新用户并授权

1、创建新用户 创建一个用户名为:test adduser test 创建初始密码: passwd test 2、授予root权限 个人用户的权限只可以在/home/test下有完整权限,其他目录要看别人授权。而经常需要roo...

xixingzhe ⋅ 今天 ⋅ 0

求助:TiledMap如何旋转对象呢?

比如我要旋转一个梯子的角度,单纯在TiledMap旋转角度好像没有效果。那是要用代码来控制角度,还是说只能通过导入相对应的斜的图片才可以呢?

花谢自相惜 ⋅ 今天 ⋅ 0

Micronaut 之HelloWorld!

小试一下Micronaut,按照官方文档跑了一下helloworld 第一步克隆,按照官方文档是: git clone git@github.com:micronaut-projects/micronaut-core.git 结果怎么是这样?? 换个方法吧 git ...

桂哥 ⋅ 今天 ⋅ 0

pom文件

Aeroever ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部