hive刪除一個(gè)分區(qū)的數(shù)據(jù) hive的分區(qū)和分桶有什么卻別,分別怎么做?
hive的分區(qū)和分桶有什么卻別,分別怎么做?一、1、一個(gè)表也可以擁有一個(gè)或是多個(gè)分區(qū),每個(gè)分區(qū)以文件夾的形式另修真者的存在表文件夾的目錄下。2、表和字段名不區(qū)分大小寫(xiě)字母。3、分區(qū)是以字段的形式在表結(jié)
hive的分區(qū)和分桶有什么卻別,分別怎么做?
一、1、一個(gè)表也可以擁有一個(gè)或是多個(gè)分區(qū),每個(gè)分區(qū)以文件夾的形式另修真者的存在表文件夾的目錄下。
2、表和字段名不區(qū)分大小寫(xiě)字母。
3、分區(qū)是以字段的形式在表結(jié)構(gòu)中修真者的存在,按照describetable命令這個(gè)可以查看到字段修真者的存在,只不過(guò)該字段不貯存實(shí)際中的數(shù)據(jù)內(nèi)容,并不是分區(qū)的意思是。
二、桶是比表或分區(qū)無(wú)比細(xì)顆粒度的數(shù)據(jù)范圍劃分。針對(duì)某一列并且桶的組織,對(duì)列值哈希,接著除以桶的個(gè)數(shù)求余,確定將該條記錄儲(chǔ)存時(shí)到哪個(gè)桶中。好處:
1、完成任務(wù)更高的查詢處理效率。
2、使抽樣更高效穩(wěn)定。
hadoop任務(wù),給定數(shù)據(jù)量和處理邏輯(Sql、UDF等),如何預(yù)估計(jì)算時(shí)間與資源?有沒(méi)有實(shí)際案例?
是需要比較明確概念定義:可以計(jì)算時(shí)間是指計(jì)算機(jī)不好算執(zhí)行的時(shí)間,不是人耐心的等待的時(shí)間,而且在等待時(shí)間依賴性太強(qiáng)于有多少資源也可以調(diào)度。
簡(jiǎn)單的方法我們不考慮到資源問(wèn)題,討論到時(shí)間的預(yù)估。執(zhí)行時(shí)間依賴于執(zhí)行引擎是Spark我還是MapReduce。
Spark任務(wù)Spark任務(wù)的總執(zhí)行時(shí)間這個(gè)可以看SparkUI,以下圖為例
Spark任務(wù)是分多個(gè)PhysicalStage執(zhí)行的,每個(gè)stage下有很多個(gè)task,task的時(shí)間也有大概的預(yù)估,如下圖
Task個(gè)數(shù)依賴于Hive表的文件數(shù),每個(gè)task的執(zhí)行時(shí)間依賴感于UDF是怎末利用的,需要具體問(wèn)題具體對(duì)待。
MapReduce任務(wù)MapReduce任務(wù)的執(zhí)行時(shí)間,也不需要參考hadoopwebui
整體執(zhí)行時(shí)間map_time*map_numberreduce_time*reduce_number;
map個(gè)數(shù)一般情況下是hive表的分區(qū)數(shù);
map執(zhí)行時(shí)間取決于它每個(gè)分區(qū)里的數(shù)據(jù)量和udf的邏輯;
無(wú)論是Spark應(yīng)該MapReduce,計(jì)算時(shí)間都依賴于:
數(shù)據(jù)源分區(qū)數(shù)每個(gè)分區(qū)里的文件數(shù)每個(gè)文件的大小udf邏輯sql邏輯(group by、filter、distinctcount)
實(shí)際場(chǎng)景下資源是太遠(yuǎn)的,我們也不冷淡可以計(jì)算時(shí)間,反到是更關(guān)心一個(gè)數(shù)據(jù)集是需要多久能一次性處理完,諸如一個(gè)1T的Hive表至少不需要一個(gè)小時(shí)跑完MapReduce。這時(shí)候我們是需要做實(shí)驗(yàn),仔細(xì)觀察一個(gè)分區(qū)差不多必須多久跑完,數(shù)據(jù)有沒(méi)有skew,從經(jīng)驗(yàn)上提出另一個(gè)合理的時(shí)間,使之可以保證任務(wù)未交付。