日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

hive源代碼解析之一hive主函數(shù)入口

系統(tǒng) 4489 0

hive源代碼解析之一hive主函數(shù)入口

hive其實(shí)做的就是解析一條sql然后形成到mapreduce任務(wù),就是一個(gè)代碼解釋器。hive源代碼本身就可以分為ql/metasotre/service/serde 這幾塊;其中

? 對(duì)于Hive來(lái)說(shuō),ql是整個(gè)Hive最最核心的一個(gè)模塊,Hive主要的功能都集中在這樣一個(gè)模塊中,即 org.apache.hadoop.hive.ql.*,其中最重要的幾個(gè)模塊:

  • parse:語(yǔ)法解析器和語(yǔ)義分析器,將SQL轉(zhuǎn)化為執(zhí)行計(jì)劃。
  • optimizer:優(yōu)化器,包括執(zhí)行計(jì)劃Operator圖的改寫(邏輯優(yōu)化)和Task圖的改寫(物理優(yōu)化)
  • exec:執(zhí)行器,作業(yè)提交和執(zhí)行相關(guān)。
  • udf:Hive內(nèi)置的用戶自定義函數(shù),包括操作符加、減、乘、除、與、或、非,常用數(shù)學(xué)操作(sin、cos等)、字符串操作(substr、instr)、聚合操作(count、sum、avg等)等。

?

?

?

?

?

? ? ? 無(wú)論使用CLI、Thrift Server、JDBC還是自定義的提交工具,最終的HQL都會(huì)傳給Driver實(shí)例,執(zhí)行Driver.run()方法。從這種設(shè)計(jì)也可以看出,如果您要開發(fā)一套自定義的Hive作業(yè)提交工具,最好的方式是引用Driver實(shí)例,調(diào)用相關(guān)方法進(jìn)行開發(fā)。
? ? ? 而Driver.run()方法,獲得了這樣一個(gè)HQL,則會(huì)執(zhí)行兩個(gè)重要的步驟:編譯和執(zhí)行,即Driver.complie()和Driver.execute()。對(duì)于Driver.comile()來(lái)說(shuō),其實(shí)就是調(diào)用parse和optimizer包中的相關(guān)模塊,執(zhí)行語(yǔ)法解析、語(yǔ)義分析、優(yōu)化(回想一下大學(xué)時(shí)的編譯原理,編譯的過(guò)程是不是語(yǔ)法分析、語(yǔ)法解析、語(yǔ)義分析);對(duì)于Driver.run()來(lái)說(shuō),其實(shí)就是調(diào)用exec包中的相關(guān)模塊,將解析后的執(zhí)行計(jì)劃執(zhí)行,如果解析后的結(jié)果是一個(gè)查詢計(jì)劃,那么通常的作法就是提交一系列的MapReduce作業(yè)。

以查詢的執(zhí)行為例,整個(gè)Hive的流程是非常簡(jiǎn)單的一條直線,由上到下進(jìn)行。

hive源代碼解析之一hive主函數(shù)入口

?

對(duì)于main函數(shù),其中主要做了三件事情:

(1)初始化各種配置和參數(shù);

(2)循環(huán)執(zhí)行解析執(zhí)行各種命令;

?

?

?

hive源代碼解析之一hive主函數(shù)入口


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 专栏| 黔西| 南木林县| 墨江| 凌海市| 天长市| 崇义县| 临夏市| 迭部县| 永和县| 平度市| 漳平市| 霍山县| 沛县| 定州市| 娱乐| 垫江县| 通河县| 平塘县| 诏安县| 屯门区| 徐州市| 乌恰县| 永修县| 新丰县| 五莲县| 霸州市| 醴陵市| 吉林省| 平顶山市| 临夏县| 商洛市| 巴马| 保德县| 方山县| 太白县| 九龙城区| 广南县| 浦北县| 莒南县| 隆化县|