Hive客戶端腳本CLI分析及debug環境搭建

接觸Hive,天然少不了它家的shell命令行模式,下面就來分析下,日常咱們接觸的這個腳本到底如何運行的。java

研究的版本是 1.2.1.(先搭建好Hadoop環境)   ---擴展閱讀:有興趣的看看別人寫的 http://www.javashuo.com/article/p-kqzdawxc-kh.htmlshell

1)下載Hive-1.2.1的二進制文件apache

http://archive.apache.org/dist/ 下面編程

2)解壓縮segmentfault

tar -zvxf apache-hive-1.2.1-bin.tar.gzeclipse

3)啓動hive函數

./bin/hive 查看程序界面oop

4)定位入口函數spa

 經過腳本跟蹤,找到命令行

cli () {
  CLASS=org.apache.hadoop.hive.cli.CliDriver
  execHiveCmd $CLASS "$@"
}

看來主類就是 org.apache.hadoop.hive.cli.CliDriver

execHiveCmd命令在/root/hive/apache-hive-1.2.1-bin/bin/ext/util下面.

 打印$CLASS的值

結論就是:org.apache.hadoop.hive.cli.CliDriver就是入口類。

 

 http://www.iteblog.com/archives/864

 

---那麼剩下的工做就是把源碼如今eclipse裏搭建好。---源碼跟蹤的是0.9.0版本

搭建eclipse過程當中碰到幾個問題

1)HiveParse.java類沒有,這個實際上是經過HiveParse.g文件產生的,本身編譯下0.9.0版本的源碼,就能夠生成。

其它相似問題經過這種方式解決。

費了九牛二虎之力,終於搭建好了,上圖

依賴的jar包比較多,以下圖所示:

剩下的就是debug源碼了。爲啥選擇0.9.0,理由有2個:

1早期的代碼比較少,能夠儘快掌握Hive的原理。後面的代碼雖然比較新,可是換湯不換藥。

2手頭上的Hive編程指南講的是0.9.0.

so,無論怎樣,先看了。

--- debug語句以下:

jdb       org.apache.hadoop.hive.cli.CliDriver  -hiveconf x=y --define A=B --hivevar C=D -h 127.0.0.1

stop in  org.apache.hadoop.hive.cli.CliDriver.main

 

stop in org.apache.hadoop.hive.cli.OptionsProcessor.process_stage2

 stop in  org.apache.hadoop.hive.cli.CliDriver.setHiveVariables

 stop in org.apache.hadoop.hive.cli.CliDriver.getFormattedDb

stop in org.apache.hadoop.hive.cli.CliDriver.processLine

 stop in org.apache.hadoop.hive.cli.CliDriver.processCmd

run  

相關文章
相關標籤/搜索