-- 清空分区表 清空hive表 hive分区表清空 清空hive分区表

为什么着重强调分区表,因为分区表清空可能会因为分区过多导致清理速度特别慢.

方式1 truncate table tb1(分区表注意)

注意事项:

truncate table不会删除hdfs 分区文件夹,只会删除parquet文件,所以结果就是一堆分区目录还在,但是下面的parquet文件都被删除了.

truncate table 不止不会删除分区文件夹,而且不会删除hive元数据中存储的分区信息,即hive认为之前的分区还在,spark读取到就会扫描该分区下的文件,没有不报错,但是目录不存在就报错了,这就是为什么手动删除分区文件夹会导致spark2.x报错. spark3变成了警告信息.

通过 show partitions 表名; 来检测hive元数据是否被清空.

使用场景: 分区表的分区不是特别多的场景,比如几百个分区.如果分区太多,那么删除将会分成缓慢.

方式2 复制表结构 删除原表 修改表名(推荐)

有些公司不允许代码新建hive表. eg:sb大华

create table tbnew like tbold;
drop table if exists tbold;
alter table tbnew rename to tbold;

方式3 hadoop删除分区目录 msck修复 (版本号注意)

The MSCK REPAIR TABLE command was designed to manually add partitions that are added to or removed from the file system, such as HDFS or S3, but are not present in the metastore.

可以看文档中写到 msck用来修复你新增或者删除了分区文件,但是没有同步到hive元数据的情况.

坑:

  • hive2的msck只能修复新增的分区,手动删除的分区并不会修复到元数据. msck repair table tableName;
  • hive3.0.0 (https://issues.apache.org/jira/browse/HIVE-17824)可以: msck repair table tableName sync partitions ; 等效于: ALTER TABLE tableName RECOVER PARTITIONS;

msck官方语法:

MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];

文档: LanguageManual DDL - Apache Hive - Apache Software Foundation

如果你是hive2+spark2 那么方式3会导致你spark任务报错.

如果你是hive3+spark3 那么没问题,但是记得使用 msck的sync模式.

如果我就是用hive2 spark2 但是分区已经被我删除了怎么解决

show partitions partitionedtb1; -- 查看hive元数据里面存储了哪些分区
alter table partitionedtb1 set TBLPROPERTIES('EXTERNAL'='TRUE'); -- 修改为外部表是为了保证删除分区后,数据不会被删除
alter table partitionedtb1 drop if exists partition (dt <> 'null'); -- 注意: 这里虽然文件夹没有,但是他是根据元数据走的,所以你的元数据会被删除.
alter table partitionedtb1 set TBLPROPERTIES('EXTERNAL'='FALSE'); 

清空hive表 姿势大全相关推荐

  1. Hive Sql 大全(hive函数,hive表)

    Hive Sql 大全 本节基本涵盖了Hive日常使用的所有SQL,因为SQL太多,所以将SQL进行了如下分类: 一.DDL语句(数据定义语句): 对数据库的操作:包含创建.修改数据库 对数据表的操作 ...

  2. <Zhuuu_ZZ>HIVE(终)总结大全:是兄弟就来三连我

    HIVE总结大全 一 Hive入门 1 什么是Hive 2 Hive的优缺点 2.1 优点 2.2 缺点 3 Hive架构原理 4 Hive和数据库比较 4.1 查询语言 4.2 数据存储位置 4.3 ...

  3. arcengine遍历属性表_记录一次Hive表清理过程

    记录一次Hive表清理过程 背景 时间:2020-07-17 在用spark+hive做数仓的过程中往往会产生很多表,过多历史表会很快消耗掉有限的hdfs资源,并且时间过于久远的表一般不会具有利用价值 ...

  4. hbase映射为hive表(转载+整理+自己验证)

    本文是对[1][2]的整理以及在新版本上的验证 ---------------------------------------------------------------------------- ...

  5. 史上很全的注册表修改大全

    史上很全的注册表修改大全 请使用 Ctrl+F 键来查找你想要的 不想别人使用你电脑的某些功能,或是在网吧想使用某些功能,或是让自己的电脑速度更快 怎么办 如果你有点注册表的知识就OK拉 没有多深奥 ...

  6. hive表中的数据导出

    将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 一.insert导出 将查询的结果导出到本地 insert overwrite local direc ...

  7. SparkSQL overwrite插入Hive表数据重复问题

    问题描述: 使用Spark SQL采用overwrite写法写入Hive(非分区表,),全量覆盖,因为人为原因脚本定时设置重复,SparkSql计算任务被短时间内调起两次,结果发现任务正常运行,造成写 ...

  8. Hive总结 --hive表的创建,删除和修改

    一.创建表 官网创建HIVE表定义如下: CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (No ...

  9. hive表中的数据导出:表数据的导出7种方式

    将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等 insert导出 1)将查询的结果导出到本地 :第一种 insert overwrite local ...

最新文章

  1. Kornia开源可微分计算机视觉库,基于Pytorch,GitHub 3000星
  2. R语言可视化包ggplot2改变图例(legend)的标题(title)实战
  3. JZOJ 3813. 【NOIP2014模拟9.7】我要的幸福
  4. hadoop API之:文件操作
  5. 删除所有正在运行和退出的docker实例
  6. python实现连续数列相加_技术 | Python经典面试题解析实现斐波那契数列
  7. Wiz Editor md 为知笔记 Markdown 插件
  8. Ubuntu(elementary os)因为环境变量 /etc/profile 配置错误,导致登录界面无限循环,无法进入系统的解决方案
  9. 2021年Node.js开发人员学习路线图
  10. python怎么重复程序_利用Python程序完成ABAQUS中的一些重复性操作
  11. 基于Visual Studio2012实现Windows8的metro界面笔迹手写识别文档
  12. windows下php命令行模式错误信息
  13. 输入n个整数,输出其中最小的k个
  14. JAVA 正则表达式(大全)
  15. 关于从IE8升级到IE11后,卸载不了IE11解决方法
  16. 美国计算机一年制,美国一年制硕士
  17. OSG 场景图(Scene Graph) 类图
  18. java 健身会所_基于jsp的健身俱乐部会员-JavaEE实现健身俱乐部会员 - java项目源码...
  19. 基于gfortran的WRF安装
  20. 逗比老师带你搞定C语言指针

热门文章

  1. web开发在线培训,前端英文自我介绍
  2. linux设置echo字体大小,Linux 用echo输出带特效的字体
  3. 算法的特性和设计要求
  4. 1165:Hermite多项式(C C++)
  5. Spring自动装配及自动注入
  6. 同步电复律英文_同步电复律操作规程
  7. c语言裸函数,【逆向知识】裸函数(Naked函数)
  8. linux puppy 安装软件,puppy linux(linux操作系统)V5.7.2 官方版
  9. JAVA实现雪花飘落动画效果
  10. java基础学习(三)