hive遷移后修復分區慢,怎么辦?

我有1個30TB的分區表,客戶給的帶寬只有600MB,按照150%的耗時來算,大概要遷移17小時。
使用hive自帶的修復分區命令(一般修復分區比遷移時間長一點),可能要花24小時。于是打算用前面黃大佬的牛B方案。


Hive增量遷移:創建表結構+數據遷移(distcp)+修復分區

1)創建表結構 讀取cdh的建表語句,在tbds上創建表

2)數據遷移 同distcp

3)分區數據 msck repair table XX(alter table XX recover partitions) 修復太慢;改用查詢元數據庫,對比兩邊分區數據差異項,然后拼接成add partition語句,來執行。

例如之前修復一個1000個分區的表,需要8h

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.pswp.cn/web/65727.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65727.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65727.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

慧集通(DataLinkX)iPaaS集成平臺-業務建模之業務對象(一)

通過左側導航菜單〖業務建模〗→〖業務對象〗,進入該界面;在該界面可以查看到系統中已存在的業務對象; 1.新建業務對象 在DatalinkX中進入【業務建模】的【業務對象】頁面,點擊【新建】按鈕進入新建頁面; 新建頁面左側…

Linux系統之hostname相關命令基本使用

Linux系統之hostname相關命令基本使用 一、檢查本地系統版本二、hostname命令的幫助說明中文幫助說明 三、hostname命令的基本使用1. 查看計算機名2. 查看本機上所有IP地址3. 查看主機FQDN4. 查看短主機名 四、hostnamectl命令的使用1. 查看主機詳細信息2. 設置主機名3. hostna…

DC系列靶場滲透--DC-3

目錄 環境搭建 開始滲透 掃存活 掃端口 掃服務 查看80端口 嘗試在80端口中的登陸頁面尋找sql注入失敗 掃目錄 進入/htaccess.txt目錄看一下 我們嘗試找一下Joomla3.7.0版本的漏洞 我們嘗試利用該漏洞 查數據庫名 查表名 查列名 查數據 找到密碼的可能的編碼方式…

js代理模式

允許在不改變原始對象的情況下,通過代理對象來訪問原始對象。代理對象可以在訪問原始對象之前或之后,添加一些額外的邏輯或功能。 科學上網過程 一般情況下,在訪問國外的網站,會顯示無法訪問 因為在dns解析過程,這些ip被禁止解析,所以顯示無法訪問 引…

uniapp 之 uni-forms校驗提示【提交的字段[‘xxx‘]在數據庫中并不存在】解決方案

目錄 場景問題代碼結果問題剖析解決方案 場景 uni-forms官方組件地址 使用uniapp官方提供的組件,某個表單需求,單位性質字段如果是高校,那么工作單位則是高校的下拉選擇格式,單位性質如果是其他的類型,工作單位則是手動…

深度學習知識點:RNN

文章目錄 1.簡單介紹2.網絡結構3.應對梯度消失 1.簡單介紹 循環神經網絡(RNN,Recurrent Neural Network)是一類用于處理序列數據的神經網絡。與傳統網絡相比,變化不是特別大,不如CNN的變化那么大。 為什么要有循環神經…

(leetcode算法題)287. 尋找重復數(經典題目,二分解法)

如果一個題目限定了數據范圍是[1, n]內的整數,那么這個題目可以思考的就是 nums[i]和 i 的關系,769. 最多能完成排序的塊 這個題就使用到了子數組中最大值和 連續[0, n - 1]的關系 而對于本題來說,也可以思考[1, n] 和 nums[i] 的關系&…

獲得PostgreSQL中級認證后,可以從事哪些工作崗位?

獲得 PostgreSQL 中級認證后,可以獲得的崗位 數據庫管理類 數據庫管理員(DBA):負責 PostgreSQL 數據庫的日常維護、監控、備份與恢復、性能優化、安全管理等工作。確保數據庫的穩定運行和數據的安全性、完整性,及時處理…

4.1、二纖單向、二纖雙向、四纖雙向,網絡級保護

1、線性復用段保護(LMSP) 就像是給網絡業務傳輸準備的一個 “保險”。在 SDH 和 MSTP 網絡里,業務信號要通過一段一段的路(復用段)來傳輸,LMSP 就是為了保證這些路出問題的時候,業務還能正常走。…

【spark源碼修改】hive3.1.3 spark3.5.4編譯,需要修改源碼,最終編譯成功

【spark源碼修改】hive3.1.3 spark3.5.4編譯,需要修改源碼,最終編譯成功 1. 準備安裝包與maven編譯環境1.1 安裝環境準備1.2 修改pom1.3 打包命令2. 編譯與問題解決2.1 開始編譯 失敗, 缺包pentaho-aggdesigner-algorithm:pom:5.1.5-jhyde2.2 Hive Spark Remote Client 模塊…

SQL-leetcode-584. 尋找用戶推薦人

584. 尋找用戶推薦人 表: Customer -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | | referee_id | int | -------------------- 在 SQL 中,id 是該表的主鍵列。 該表的每一行表示一個客戶的 id、姓名以及推…

【數據庫】一、數據庫系統概述

文章目錄 一、數據庫系統概述1 基本概念2 現實世界的信息化過程3 數據庫系統內部體系結構4 數據庫系統外部體系結構5 數據管理方式 一、數據庫系統概述 1 基本概念 數據:描述事物的符號記錄 數據庫(DB):長期存儲在計算機內的、…

Scala語言的面向對象編程

Scala語言的面向對象編程 面向對象編程(Object-Oriented Programming,OOP)是一種編程范式,它使用“對象”來組織代碼,這些對象能夠包含數據(屬性)以及功能(方法)。Scala…

【JVM-2.1】如何使用JMC監控工具:詳細步驟與實戰指南

Java Mission Control(JMC)是Oracle提供的一個高級圖形化監控工具,專為Java應用程序的性能分析和故障排查設計。JMC不僅提供了實時監控功能,還支持飛行記錄器(Flight Recorder)功能,能夠記錄JVM…

QT c++ 樣式 設置 標簽(QLabel)的漸變色美化

上一篇文章中描述了按鈕的純色&#xff0c;本文描述標簽的漸變色美化。 1.頭文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QLabel…

設計模式 行為型 觀察者模式(Observer Pattern)與 常見技術框架應用 解析

觀察者模式&#xff08;Observer Pattern&#xff09;是一種行為設計模式&#xff0c;它定義了一種一對多的依賴關系&#xff0c;讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時&#xff0c;會通知所有觀察者對象&#xff0c;使它們能夠自動更新。 一…

03_Redis基本操作

1.Redis查詢命令 1.1 官網命查詢命令 為了便于學習Redis,官方將其用于操作不同數據類型的命令進行了分類整理。你可以通過訪問Redis官方網站上的命令參考頁面https://redis.io/commands來查閱這些分組的命令,這有助于更系統地理解和使用Redis的各項功能。 1.2 HELP查詢命令…

system securiry: supervisor password required

報錯解釋&#xff1a; 這個錯誤表明系統安全模塊&#xff08;如SELinux或AppArmor&#xff09;需要超級用戶&#xff08;通常是root&#xff09;的密碼來確認一個操作。這通常發生在嘗試進行某些需要高級權限的系統更改時。 解決方法&#xff1a; 如果你擁有root權限&#xff0…

Ubuntu 如何查看盤是機械盤還是固態盤

在 Ubuntu 系統中&#xff0c;您可以通過以下方法來確定硬盤是機械硬盤&#xff08;HDD&#xff09;還是固態硬盤&#xff08;SSD&#xff09;&#xff1a; 使用 lsblk 命令&#xff1a; 打開終端&#xff0c;輸入以下命令&#xff1a; lsblk -d -o name,rota該命令將列出所…

探索式測試

探索式測試是一種軟件測試風格&#xff0c;它強調獨立測試人員的個人自由和職責&#xff0c;為了持續優化其工作的價值&#xff0c;將測試學習、測試設計、測試執行和測試結果分析作為相互支持的活動&#xff0c;在整個項目實現過程中并行地執行。 選擇合適的探索式測試方法我…