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  

相关文章
相关标签/搜索