摸魚大數據——Hive表操作——分區表

1、介紹

特點: 分區表會在HDFS上產生目錄。查詢數據的時候使用分區字段篩選數據,可以避免全表掃描,從而提升查詢效率
注意: 如果是分區表,在查詢數據的時候,如果沒有使用分區字段,它回去進行全表掃描,會降低效率

只需要記住一點,分區表是用來提升Hive的數據分析效率

2、一級分區
創建分區表: create [external] table [if not exists] 表名稱(字段名稱1 字段數據類型,字段名稱2 字段數據類型..) partitioned by (分區字段 字段數據類型);
?
自動生成分區目錄并插入數據: load data [local] inpath '文件路徑' into table 表名稱 partition (分區字段=值);
?
注意: 如果使用load導入數據,沒有寫local,文件路徑就是HDFS上的路徑。否則就是linux的路徑

示例:

use day06;
?
-- 1- 創建分區表
create table one_part_tb(id int,name string,price double,num int
) partitioned by (year int)
row format delimited fields terminated by ' ';
?
?
-- 2- 通過load將HDFS中的文件導入到Hive表中
load data inpath '/source/order202251.txt' into table one_part_tb partition (year=2022);
load data inpath '/source/order202351.txt' into table one_part_tb partition (year=2023);
load data inpath '/source/order202352.txt' into table one_part_tb partition (year=2023);
load data inpath '/source/order2023415.txt' into table one_part_tb partition (year=2023);
?
-- 3- 數據驗證
select * from one_part_tb;
?
-- 4- 使用分區
select * from one_part_tb where year=2022;
?
-- 5- 如果沒有指定分區,那么會進行全表掃描,拖慢了效率
select * from one_part_tb where price>=20;

3、多級分區
創建分區表: create [external] table [if not exists] 表名稱(字段名稱1 字段數據類型,字段名稱2 字段數據類型..) partitioned by (分區字段1 字段數據類型,分區字段2 字段數據類型...);
?
自動生成分區目錄并插入數據: load data [local] inpath '文件路徑' into table 表名稱 partition (分區字段1=值,分區字段2=值....);
?
注意: 如果使用load導入數據,沒有寫local,文件路徑就是HDFS上的路徑。否則就是linux的路徑

示例:

use day06;
?
-- 1- 創建多級分區表
create external table multi_pat_tb(id int,name string,price double,num int
) partitioned by (year string,month string,day string)
row format delimited fields terminated by ' ';
?
-- 2- 加載HDFS數據到Hive表中
load data inpath '/source/order202251.txt' into table multi_pat_tb partition (year="2022",month="5",day="1");
load data inpath '/source/order202351.txt' into table multi_pat_tb partition (year="2023",month="5",day="1");
load data inpath '/source/order202352.txt' into table multi_pat_tb partition (year="2023",month="5",day="2");
load data inpath '/source/order2023415.txt' into table multi_pat_tb partition (year="2023",month="4",day="15");
?
-- 3- 數據驗證
select * from multi_pat_tb;
?
-- 4- 使用分區
-- 注意: 如果是多分區,使用分區來提升效率的時候,需要根據需求來決定到底使用幾個分區。并不需要所有的分區都用到
-- 需求:要對2023全年的銷售情況進行分析
select * from multi_pat_tb where year="2023";
-- 需求:要對2023年5月整個月的銷售情況進行分析
select * from multi_pat_tb where year="2023" and month="5";
select * from multi_pat_tb where year="2023" and month="5" and day="2";
?
-- 5- 不使用分區
select * from multi_pat_tb where price>=20;

4、分區操作
添加分區: alter table 分區表名 add partition (分區字段1=值,分區字段2=值..);
?
刪除分區: alter table 分區表名 drop partition (分區字段1=值,分區字段2=值..);
?
修改分區名: alter table 分區表名 partition (分區字段1=舊分區值,分區字段2=舊分區值..) rename to partition (分區字段1=新分區值,分區字段2=新分區值..);
?
查看所有分區: show partitions 分區表名;
?
同步/修復分區: msck repair table 分區表名;
?
注意: 如果刪除內部表的分區,那么對應的HDFS分區目錄也被刪除了;如果刪除外部表的分區,那么對應的HDFS分區目錄還保留著

示例:

use day06;
?
-- 查詢表的分區信息
show partitions one_part_tb;
show partitions multi_pat_tb;
?
-- 添加分區
alter table one_part_tb add partition (year=2024);
-- 如果是多級分區,那么添加分區的時候,需要將所有的分區都添加上
alter table multi_pat_tb add partition (year="2024");
alter table multi_pat_tb add partition (year="2024",month="1",day="1");
?
-- 修改分區
alter table one_part_tb partition (year=2024) rename to partition (year=2000024);
?
-- 刪除分區
-- 注意:如果刪除內部表的分區,那么對應的分區目錄也被刪除了;如果刪除外部表的分區,那么對應的HDFS分區目錄還保留著
alter table one_part_tb drop partition (year=2000024);
alter table multi_pat_tb drop partition (year="2024",month="1",day="1");
?
-- 修復分區
-- 在執行下面的語句之前,需要手動去/user/hive/warehouse/day06.db/one_part_tb路徑下創建一個year=2025分區目錄
msck repair table one_part_tb;

給多級分區表添加分區遇到的錯誤:

原因: 如果是多級分區,那么添加分區的時候,需要將所有的分區都添加上

修改分區效果:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17611.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17611.shtml

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

相關文章

說一下 ACID 是什么?

ACID 是數據庫事務的四個特性的首字母縮寫,包括原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。 原子性(Atomicity&…

什么是NAND Flash ECC?

在存儲芯片行業,數據完整性和可靠性是至關重要的。為了確保數據的準確性和防止數據丟失,ECC(錯誤校正碼)在NAND Flash存儲中扮演了關鍵角色。MK米客方德將為您解答NAND Flash ECC的基本概念、工作原理及其在實際應用中的重要性。 …

重繪和重排

重繪(Repaint)和重排(Reflow)是與網頁渲染和布局密切相關的兩個概念。以下是關于這兩個概念的詳細解釋: 重繪(Repaint) 定義: 當一個元素的外觀發生改變,但沒有改變布…

C#【進階】俄羅斯方塊

俄羅斯方塊 文章目錄 Test1_場景切換相關BeginScene.csBegionOrEndScene.csEndScene.csGame.csGameScene.csISceneUpdate.cs Test2_繪制對象基類和枚舉信息DrawObject.csIDraw.csPosition.cs Test3_地圖相關Map.cs Test4_坐標信息類BlockInfo.cs Test5_板磚工人類BlockWorker.…

數據庫中字符串相加需要換行

數據庫中字符串相加需要換行,這個需求在現在項目中很常見,特別是備注內容的追加,因此把Oracle/SQLServer/MySQL這幾種數據庫的使用進行簡單的總結一下 1、本文內容 Oracle中實現字符串相加需要換行SQLServer中實現字符串相加需要換行MySQL中…

VMware的網絡不通?這一篇給你一定的參考.虛擬機網絡配置

如果你的虛擬機莫名其妙ping不通網絡了,可以參考一下我的配置。這不是一篇教程,你可以核對一下自己的bug。 虛擬網絡配置器中: 使用管理員權限更改設置,會跳出來vmnet0 橋接、僅主機和NAT都必須要有 vment0: vmnet1:…

【樂吾樂3D可視化組態編輯器】相機與視角

系統默認的相機為環繞旋轉相機,它可以環繞一個中心點做上下左右的旋轉,來從不同角度觀察場景。當然,您也可以把一些特定角度的信息保存下來,在系統中我們把這個信息稱作視角。通過交互中的切換視角動作,您就可以實現把…

英語新概念2-回譯法-lesson1 和 lesson17

Lesson 1 私人談話A private conversation 翻譯: Last Sunday I went to the theater. My seat was good and the play was interesting, but I can not enjoy it. A young man and a young woman sat behind me and they were talking loudly. I felt angry becau…

2024年電子、電氣與信息科學國際會議(EEIS 2024)

2024年電子、電氣與信息科學國際會議(EEIS 2024) 2024 International Conference on Electronics, Electrical and Information Science 【重要信息】 大會地點:昆明 大會官網:http://www.iceeis.com 投稿郵箱:iceeis…

振弦式土壓力計:功能優勢與專業應用

振弦式土壓力計,作為一種廣泛應用于土木工程領域的測量儀器,具有多種功能優勢,使得它成為了解被測結構物內部土壓力變化的有效工具。下面我將詳細介紹振弦式土壓力計的功能優勢及其在土木工程中的應用。 點擊輸入圖片描述(最多30字…

【運維項目經歷|021】Spark大數據分析平臺建設項目

目錄 項目名稱 項目背景 項目目標 項目成果 我的角色與職責 我主要完成的工作內容 本次項目涉及的技術 本次項目遇到的問題與解決方法 本次項目中可能被面試官問到的問題 問題1:項目周期多久? 問題2:服務器部署架構方式及數量和配置…

FTP協議——Pure-Ftpd安裝(Linux)

1、簡介 Pure-FTPd是一個高效、免費且開源的FTP服務器軟件,廣泛應用于各種Unix/Linux系統。它以其易用性、高安全性和功能豐富而聞名,適用于個人和企業的文件傳輸需求。 2、步驟 環境:Ubuntu 22.04.4 下載地址:Index of /pub/p…

3D Web輕量化平臺HOOPS Web Platform在數字工廠中的應用實例

今天我們來聊聊HOOPS工具對大型數據的處理和可視化管理。這里是一個數字工廠的儀表盤展示,您可以在儀表盤上看到包括工廠的能源消耗、計劃產量等數據信息,以及各種制造機器的生產量。 HOOPS中文網http://techsoft3d.evget.com/ 我們的HOOPS工具&#xf…

鏈表帶環問題的思考

判斷鏈表是否帶環 思路:快慢指針 慢指針走一步,快指針走兩步,當快指針追上慢指針時,代表該鏈表帶環。代碼如下: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ …

百世慧入選第七屆數字中國建設峰會“2024企業數字化轉型典型應用案例”

5月24日-25日,第七屆數字中國建設峰會在福州舉行。本屆峰會是國家數據工作體系優化調整后首次舉辦的數字中國建設峰會,主題為“釋放數據要素價值,發展新質生產力”。 為了全方位展示各領域數字化最新成果,共創數字中國美好未來&a…

大胖子走迷宮,bfs

1.大胖子走迷宮 - 藍橋云課 (lanqiao.cn) from collections import dequen,kmap(int,input().split()) mp[0] for i in range(n):mp.append(0input()) vis[[0 for i in range(n1)] for i in range(n1)] qdeque() q.append((3,3,0)) vis[3][3]1 def f(t):if t<k:return 2eli…

【啟程Golang之旅】掌握Go語言數組基礎概念與實際應用

歡迎來到Golang的世界&#xff01;在當今快節奏的軟件開發領域&#xff0c;選擇一種高效、簡潔的編程語言至關重要。而在這方面&#xff0c;Golang&#xff08;又稱Go&#xff09;無疑是一個備受矚目的選擇。在本文中&#xff0c;帶領您探索Golang的世界&#xff0c;一步步地了…

java入門 springboot上傳文件

一、 pom.xml knife4j和springboot之間存在版本不兼容的問題&#xff0c;需要選對合適的版本 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apach…

雜談|RestFul和http的區別

前言 今天和我一組的小伙伴&#xff0c;在對接一個接口時&#xff0c;客戶將DELETED請求設置了body參數&#xff0c;導致一個功能反復搞了半天&#xff0c;今天就來說下這兩者的區別 1.HTTP概述 HTTP&#xff08;HyperText Transfer Protocol&#xff09;是一種用于從WWW&…

操作系統5_虛擬存儲器

操作系統5_虛擬存儲器 文章目錄 操作系統5_虛擬存儲器1. 虛擬存儲器1.1 虛擬存儲器的引入1.2 虛擬存儲器的概念1.3 虛擬存儲器的特征1.4 虛擬存儲器的實現方法2. 請求分頁存儲管理2.1 請求分頁中的硬件支持2.2 內存分配策略和分配算法2.3 調頁策略2.4 頁面置換算法2.4.1 最佳置…