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