1.MapReduce的join過程
miJoin(半連接)
(1):利用DistributedCache將小表分發(fā)到各個節(jié)點(diǎn)上,在Map過程的setup()函數(shù)里,讀取緩存里的文件,只將小表的連接鍵存儲在hashSet中。
(2):在map()函數(shù)執(zhí)行時,對每一條數(shù)據(jù)進(jìn)行判斷(包含小表數(shù)據(jù)),如果這條數(shù)據(jù)的連接鍵為空或者在hashSet里不存在,那么則認(rèn)為這條數(shù)據(jù)無效,這條數(shù)據(jù)也不參與reduce的過程。
2. hive的SQL解析過程
詞法、語法解析:Antlr 定義 SQL 的語法規(guī)則,完成 SQL 詞法,語法解析,將 SQL 轉(zhuǎn)化為抽象語法樹 AST Tree;
語義解析:遍歷 AST Tree(抽象語法樹,抽象語法結(jié)構(gòu)的樹狀),抽象出查詢的基本組成單元 QueryBlock;
生成邏輯執(zhí)行計劃:遍歷 QueryBlock,翻譯為執(zhí)行操作樹 OperatorTree;
優(yōu)化邏輯執(zhí)行計劃:邏輯層優(yōu)化器進(jìn)行 OperatorTree 變換,合并 Operator,達(dá)到減少 MapReduce Job,減少數(shù)據(jù)傳輸及 shuffle 數(shù)據(jù)量。
更多關(guān)于“大數(shù)據(jù)培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。