Hive客户端脚本CLI分析及debug环境搭建

接触Hive,自然少不了它家的shell命令行模式,下面就来分析下,平常我们接触的这个脚本到底如何运行的。

研究的版本是 1.2.1.(先搭建好Hadoop环境)   ---扩展阅读:有兴趣的看看别人写的 https://segmentfault.com/a/1190000002766035

1)下载Hive-1.2.1的二进制文件

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

2)解压缩

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

3)启动hive

./bin/hive 查看程序界面

Hive客户端脚本CLI分析及debug环境搭建_第1张图片

4)定位入口函数

 通过脚本跟踪,找到

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版本的源码,就可以生成。

其它类似问题通过这种方式解决。

费了九牛二虎之力,终于搭建好了,上图

Hive客户端脚本CLI分析及debug环境搭建_第2张图片

依赖的jar包比较多,如下图所示:

Hive客户端脚本CLI分析及debug环境搭建_第3张图片

Hive客户端脚本CLI分析及debug环境搭建_第4张图片

剩下的就是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

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

 

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

 

run  

 


 

 

 




你可能感兴趣的:(hive,1.2.1,0.9.0)