一、hive里面的分區(qū)表的一般使用場景
二、hive里面的分桶表的一般使用場景
表的數(shù)據(jù)量較大,并且進行頻繁的聚合操作:分桶可以提高聚合操作的效率。存在一些需要頻繁查詢和過濾的字段:分桶可以使得查詢更加高效。三、Hive分區(qū)表是什么
Hive分區(qū)是將數(shù)據(jù)表的某一個字段或多個字段進行統(tǒng)一歸類,而后存儲在在hdfs上的不同文件夾中。當(dāng)查詢過程中指定了分區(qū)條件時,只將該分區(qū)對應(yīng)的目錄作為Input,從而減少MapReduce的輸入數(shù)據(jù),提高查詢效率,這也是數(shù)倉優(yōu)化的一個列,也就是分區(qū)裁剪。分區(qū)表又分為靜態(tài)分區(qū)表和動態(tài)分區(qū)表兩種。這也是數(shù)倉性能優(yōu)化的一個常用點,也就是分區(qū)裁剪。
分區(qū)表分為靜態(tài)分區(qū)表和動態(tài)分區(qū)表兩種:
靜態(tài)分區(qū)表:所謂的靜態(tài)分區(qū)表指的就是,我們在創(chuàng)建表的時候,就已經(jīng)給該表中的數(shù)據(jù)定義好了數(shù)據(jù)類型,在進行加載數(shù)據(jù)的時候,我們已經(jīng)知道該數(shù)據(jù)屬于什么類型,并且直接加載到該分區(qū)內(nèi)就可以了。動態(tài)分區(qū)表:所謂的動態(tài)分區(qū)表,其實建表方式跟靜態(tài)分區(qū)表沒有區(qū)別,最主要的區(qū)別是在載入數(shù)據(jù)的時候,靜態(tài)分區(qū)表我們載入數(shù)據(jù)之前必須保證該分區(qū)存在,并且我么已經(jīng)明確知道載入的數(shù)據(jù)的類型,知道要將數(shù)據(jù)加載到那個分區(qū)當(dāng)中去,而動態(tài)分區(qū)表,在載入的時候,我們事先并不知道該條數(shù)據(jù)屬于哪一類,而是需要hive自己去判斷該數(shù)據(jù)屬于哪一類,并將該條數(shù)據(jù)加載到對應(yīng)的目錄中去。四、Hive分桶表是什么
Hive分桶是相對分區(qū)進行更細粒度的劃分。是將整個數(shù)據(jù)內(nèi)容按照某列取hash值,對桶的個數(shù)取模的方式?jīng)Q定該條記錄存放在哪個桶當(dāng)中;具有相同hash值的數(shù)據(jù)進入到同一個文件中。 如要安裝name屬性分為3個桶,就是對name屬性值的hash值對3取摸,按照取模結(jié)果對數(shù)據(jù)分桶。如取模結(jié)果為0的數(shù)據(jù)記錄存放到一個文件,取模為1的數(shù)據(jù)存放到一個文件,取模為2的數(shù)據(jù)存放到一個文件。
分桶表的使用好處:
1、基于分桶字段查詢時,減少全表掃描
--基于分桶字段state查詢來自于New York州的數(shù)據(jù)
--不再需要進行全表掃描過濾
--根據(jù)分桶的規(guī)則hash_function(New York) mod 5計算出分桶編號
--查詢指定分桶里面的數(shù)據(jù) 就可以找出結(jié)果 此時是分桶掃描而不是全表掃描
select *
from t_usa_covid19_bucket where state="New York";
2、JOIN時可以提高MR程序效率,減少笛卡爾積數(shù)量
對于JOIN操作兩個表有一個相同的列,如果對這兩個表都進行了分桶操作。那么將保存相同列值的桶進行JOIN操作就可以,可以大大較少JOIN的數(shù)據(jù)量。
3、分桶表數(shù)據(jù)進行抽樣
當(dāng)數(shù)據(jù)量特別大時,對全體數(shù)據(jù)進行處理存在困難時,抽樣就顯得尤其重要了。抽樣可以從被抽取的數(shù)據(jù)中估計和推斷出整體的特性,是科學(xué)實驗、質(zhì)量檢驗、社會調(diào)查普遍采用的一種經(jīng)濟有效的工作和研究方法。
延伸閱讀1:hive是什么
hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,用來進行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制。hive數(shù)據(jù)倉庫工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供SQL查詢功能,能將SQL語句轉(zhuǎn)變成MapReduce任務(wù)來執(zhí)行。Hive的優(yōu)點是學(xué)習(xí)成本低,可以通過類似SQL語句實現(xiàn)快速MapReduce統(tǒng)計,使MapReduce變得更加簡單,而不必開發(fā)專門的MapReduce應(yīng)用程序。hive十分適合對數(shù)據(jù)倉庫進行統(tǒng)計分析。