{eval=Array;=+count(Array);}
首先明確下定義:計(jì)算時(shí)間是指計(jì)算機(jī)實(shí)際執(zhí)行的時(shí)間,不是人等待的時(shí)間,因?yàn)榈却龝r(shí)間依賴于有多少資源可以調(diào)度。
首先我們不考慮資源問題,討論時(shí)間的預(yù)估。執(zhí)行時(shí)間依賴于執(zhí)行引擎是 Spark 還是 MapReduce。
Spark 任務(wù)的總執(zhí)行時(shí)間可以看 Spark UI,以下圖為例
Spark 任務(wù)是分多個(gè) Physical Stage 執(zhí)行的,每個(gè)stage下有很多個(gè)task,task 的時(shí)間也有大致的預(yù)估,如下圖
Task 個(gè)數(shù)依賴于 Hive 表的文件數(shù),每個(gè)task的執(zhí)行時(shí)間依賴于 UDF是怎么實(shí)現(xiàn)的,需要具體問題具體分析。
MapReduce 任務(wù)的執(zhí)行時(shí)間,也需要參考 hadoop web ui
整體執(zhí)行時(shí)間 = map_time * map_number + reduce_time * reduce_number;
map 個(gè)數(shù)一般情況下是 hive 表的分區(qū)數(shù);
map 執(zhí)行時(shí)間取決于 每個(gè)分區(qū)里的數(shù)據(jù)量 和 udf 的邏輯;
不管是 Spark 還是 MapReduce,計(jì)算時(shí)間都依賴于:
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答1
回答