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