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

hive 清空分区表 多姿势对比

目的

测试 清空hive分区表(分区>1000) 最优方案

测试背景

  • 表: 分区表 二级分区
  • 分区个数: 5400
  • 数据量: 8000 万
  • HDFS占用: 214.9 GB
  • 复制 测试的分区表 每张表耗时: 18min,其中扫描5400个路径下的文件耗时26s
    • set spark.executor.memory=3g;
    • set spark.executor.cores=15;
    • set spark.executor.instances=6;
    • set hive.exec.max.dynamic.partitions=10000000; – beeline不配置,会报错(number of dynamic partition more than 1000) 计算平台不配置,不报错,但是sql失败.
  • 以下测试耗时在同环境 同配置执行.

方案1 不推荐 truncate table tableName 删parquet,不删分区文件夹,不删hive元数据中分区信息

耗时 18min

  • 第8min开始删除hdfs文件
  • 第9min文件删除完毕
  • 第18min任务执行完毕

结果:

  • hdfs表下 分区文件夹都在,内部存储数据的parquet被删除
  • hive元数据中 分区信息未被删除(show partitions tableName 结果还在)

方案2 alter table tableName drop if exists partition (dt <> ‘null’)

耗时 4min 删parquet,删分区文件夹,删hive元数据中分区信息

  • 第2min开始删除文件
  • 第3min删除完所有文件,并开始删除元数据中分区信息( 日志显示 dropped the partition dt= … )
  • 第4min 元数据中分区信息删除完毕

结果:

  • hdfs表下 内部存储数据的parquet被删除,分区文件夹也被删除
  • hive元数据中 分区信息被删除(show partitions tableName 无结果)

方案3 推荐 hdfs删除 分区文件夹+文件 && alter table tableName drop if exists partition (dt <> ‘null’)

耗时1min40s

  • hadoop fs -rm -r “/user/hive/warehouse/rljl.db/tableName/*”
    • 耗时3s
  • alter table tableName drop if exists partition (dt <> ‘null’); – 必须删除元数据中的分区信息,否则spark看到元数据有某个分区,去HDFS找文件夹找不到会报错
    • 耗时 1min 40s

结果:

  • hdfs表下 内部存储数据的parquet被删除,分区文件夹也被删除
  • hive元数据中 分区信息被删除(show partitions tableName 无结果)

方案4 复制表结构+删除表+表重命名 不考虑(由于计算平台无法导出用户代码建表的物理模型)

步骤

  • create table tb1_bak like tb1;
  • drop table tb1;
  • alter table tb1_bak rename to tb1;

方案5 hive+spark都是3.x版本 hdfs删除表下所有文件[夹] + msck repair table tb1 sync partitions ;

  • 注意: 低版本不支持sync 会导致msck只能够把hdfs新增的分区信息同步到hive元数据中,而不能把hdfs减少的分区信息同步到hive元数据中.

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

相关文章:

  • 国家网络安全法律法规
  • 基于OpenCV的自制Python访客识别程序
  • StructuredStreaming (一)
  • C++ 的协程
  • [CKS] K8S NetworkPolicy Set Up
  • 【软件工程】一篇入门UML建模图(类图)
  • 微服务知识2
  • C语言文件操作【基础知识 + 顺序读写 + 文件版通讯录】
  • 【Java笔试强训 17】
  • maven install的时候报Unable to find main class
  • 财报解读:照明行业景气上行,欧普照明已步入增长“快车道”
  • Noah-MP陆面过程模型建模方法与站点、区域模拟实践技术
  • linux命令之tar详解
  • 快速了解车联网V2X通信
  • 接踵而至,昆仑万维天工大语言模型发布
  • Linux必会100个命令(六十)curl
  • 小满nestjs(第二十八章 nestjs 事务)
  • 1.软件测试
  • 常见元件、封装、尺寸、表面处理等
  • C语言中的三种语句
  • fastai2 实现SSD
  • 1699_simulink代码生成配置初级方案
  • 【Java】内部类Object类
  • SpringBoot整合Redis实现点赞、收藏功能
  • @TransactionalEventListener的使用和实现原理
  • 【五一创作】【Simulink】采用延时补偿的三相并网逆变器FCS-MPC