接触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
来源:oschina
链接:https://my.oschina.net/u/1382024/blog/636267