hive迁移后修复分区慢,怎么办?

embedded/2025/1/19 2:32:43/

我有1个30TB的分区表,客户给的带宽只有600MB,按照150%的耗时来算,大概要迁移17小时。
使用hive自带的修复分区命令(一般修复分区比迁移时间长一点),可能要花24小时。于是打算用前面黄大佬的牛B方案。

msck repair table分区慢的原因:

与当前分区目录下的文件大小无关,只与分区目录【数量】有关,分区目录越多,二级(或子级)目录越多,分区就越慢


Hive增量迁移:创建表结构+数据迁移(distcp)+修复分区

1)创建表结构 读取cdh的建表语句,在tbds上创建表

2)数据迁移 同distcp

3)分区数据 msck repair table XX(alter table XX recover partitions) 修复太慢;改用查询元数据库,对比两边分区数据差异项,然后拼接成add partition语句,来执行。

例如之前修复一个1000个分区的表,需要8h(质疑?--我后面用了10T的表,测试了下200个一级分区也才3分钟修复)

hive:

一级分区:alter table XX add partition (etl_date=20240101);

alter table XX add partition (etl_date=20240101);

二级分区:alter table XX add partition (etl_yn=2024,etl_mn=01);

alter table XX add partition (etl_yn=2024,etl_mn=01);

改用add partition后,1000个分区的表,10min内

上面是他的方案,我实战测试下


实战测试

1、先查询指定库的分区有几个(源端查)

beeline -u 'xxxx'进入hive

show create table 表名

查看他的分区字段

这里我们能看到他就1个分区,而且字段是dt,接下来我们来查下dt有多少个

select distinct(dt) from xxx 
查询这个表30T的表,大概花了110秒

我们能看到他是以日进行分区的。

并且有542行。我们先把这个复制出来,然后拼凑成sql。

alter table XX add partition (dt=20240101);

2、然后打开notepad++,用ctrl + f 正则处理一下

大概就处理成这样

测试:

在目标端,因为我们没有修复分区,所以这里迁移完数据和元数据后,他们是查不出来数据的。
beeline -u 'xxx'

select * from xxx limit 1;

没有数据

3、接下来我们将500多条语句丢进Hive执行一下(手动分区修复)。

然后我们在执行一下查询

select * from xxx limit 1;

有数据了,手动修复成功,比hive MSCK REPAIR TABLE table_name分区命令快n倍。


http://www.ppmy.cn/embedded/155111.html

相关文章

Python爬虫:获取详情接口和关键词接口

在电商领域,获取商品详情和关键词推荐对于市场分析和用户体验优化至关重要。Python爬虫技术可以自动化地从网页中提取这些信息。本文将详细介绍如何使用Python爬虫获取详情接口和关键词接口的数据,包括环境搭建、基本爬虫编写、数据解析、高级爬虫技术以…

【FlutterDart】MVVM(Model-View-ViewModel)架构模式例子-dio版本(31 /100)

动图更精彩 dio & http 在Flutter中,dio和http是两个常用的HTTP请求库,它们各有优缺点。以下是对这两个库的详细对比: 功能特性 http: 功能:提供了基本的HTTP请求和响应功能,如GET、POST、PUT、DELE…

cmake foreach 条件判断

格式 foreach(<loop_var> <items>)<commands> endforeach()其中<items>是由空格或空白分隔的项目列表。foreach和匹配的endforeach之间的所有命令都被记录下来而不被调用。一旦计算完endforeach&#xff0c;将为<items>中的每个项目调用一次记录…

第三章、python中的对象、变量、标识符、作用域、引用(调用)及地址的概念(3.1-3.2)------内存地址、创建对象、对象的类型及对象的划分问题

第三章、python中的对象、变量、标识符、作用域、引用(调用)及地址的概念 本章讲述编程中对象、变量、地址的基本概念及其之间的关系,可迭代对象、可变对象、不可变对象的特点。

【ComfyUI专栏】Git Clone 下载自定义节点的代理设置

我们实际在使用ComfyUI 下载节点的时候会碰到下载缓慢的问题,这个问题如何解决呢?有没有比较好的办法解决下载和复制缓慢的问题呢?这个就涉及到我们使用代理的方式进行节点下载的方式了。首先确定我们当前的代理服务器的设置,也就是IP地址和端口问题。 开启Cmd命令,执行如…

IDEA编译器集成Maven环境以及项目的创建(2)

选择&#xff1a;“File” ---> "Othoer Setting" --> "Settings for New Projects..." --->搜索“Maven” 新建项目 利用maven命令去编译这个项目 利用maven去打包

基于 STM32 连接 Mini MP3 播放器的实践探索

在嵌入式系统开发中&#xff0c;音频播放功能常常是提升项目趣味性和实用性的关键要素之一。本文将详细阐述从选用 51 单片机到最终基于 STM32 成功连接 Mini MP3 播放器并实现串口通信及音频播放的全过程&#xff0c;旨在为面临类似技术难题的开发者提供参考与借鉴。 一、51 …

Ansible深度解析:如何精准区分并选用command与shell模块

Ansible&#xff0c;作为一个强大的自动化工具&#xff0c;提供了多种模块来执行不同的任务。其中&#xff0c;command和shell模块是最常用的两个模块&#xff0c;用于在远程主机上执行命令。然而&#xff0c;尽管它们的功能相似&#xff0c;但在使用场景和特点上存在显著的差异…