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

元气小坏坏 提交于 2019-12-06 21:09:25

接触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 查看程序界面

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

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

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

依赖的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  

 


 

 

 




标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!