亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

hive源代碼解析之一hive主函數入口

系統 4570 0

hive源代碼解析之一hive主函數入口

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

? 對于Hive來說,ql是整個Hive最最核心的一個模塊,Hive主要的功能都集中在這樣一個模塊中,即 org.apache.hadoop.hive.ql.*,其中最重要的幾個模塊:

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

?

?

?

?

?

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

以查詢的執行為例,整個Hive的流程是非常簡單的一條直線,由上到下進行。

hive源代碼解析之一hive主函數入口

?

對于main函數,其中主要做了三件事情:

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

(2)循環執行解析執行各種命令;

?

?

?

hive源代碼解析之一hive主函數入口


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本高清无吗免费播放 | 青青草论坛 | 精品四虎免费观看国产高清午夜 | 中国日韩欧美中文日韩欧美色 | 伊人久久大香线蕉综合bd高清 | 天码毛片一区二区三区入口 | 青草视频在线观看免费资源 | 精品久久久久久影院免费 | 婷婷在线视频国产综合 | 亚洲欧美日韩中文字幕在线一区 | 久久四虎 | 夜夜夜夜夜操 | 久久精品国产波多野结衣 | 一本大道久久香蕉成人网 | 综合图色| 女人用粗大自熨喷水在线视频 | 久久亚洲国产欧洲精品一 | 亚洲精品一区二区三区婷婷月 | 亚洲日本人成网站在线观看 | 婷婷99精品国产97久久综合 | 四虎影视永久在线精品免费播放 | 老司机日日摸夜夜摸精品影院 | 永久黄网站色视频免费 | 天天玩天天操 | 日韩欧美网| 草草影院1| 欧美激情一区二区三区中文字幕 | 97影院秋霞国产精品 | 日韩欧美视频一区 | 特级毛片免费视频观看 | 国产精品高清久久久久久久 | 亚洲国产人久久久成人精品网站 | 一二三区 | 717影院理论午夜伦八戒 | 亚洲欧美一区二区三区麻豆 | 手机在线中文字幕 | 99久久免费观看 | 91精品久久久久亚洲国产 | 成人凹凸短视频在线观看 | 日韩精品一区二区三区高清 | 日韩视频一区 |