hive 源码学习一 -hive入口

昨天和师兄混了一天,中午还一起做了个饭,下午来我这游泳,晚上dota到深夜,挺hi的,谈了很多关于心态的,很久没这么沟通了
周日把hive wiki差不都看完了,hivesql也很久了,一直没有时间去看下hive源码,才把源码checkout下来,导入eclipse,找到clidriver,入口了,明天继续阅读,对了,checkout出来的项目是ant的,eclipse导入需要手动配置 .classpath .projece2个文件,内容如下:
.project

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>hivesource<项目名></name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>


.classpath
<?xml version="1.0" encoding="UTF-8"?> 
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="othersrc"/>
<classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<!--<classpathentry kind="lib" path="lib/dom4j.jar"/>-->
<classpathentry kind="output" path="classes"/>
</classpath>

总结:夫祸患常积于忽微 而智勇多困于所溺,有点跑题,没事反正收视率也不高,我一个人知道就好了
言归正传,下载下来找到cli目录,如下图有5个类,有的版本是4个,打开主类cliDriver
[img]http://www.tbdata.org/wp-content/uploads/2010/11/cli%E7%B1%BB.png[/img]
——————CliDriver类——————————
主类中有主要的几个方法,当然main是入口,下图是引用别人画的
[img]http://www.tbdata.org/wp-content/uploads/2010/11/CliDriver%E5%BC%80%E5%A7%8B.png[/img]
其中maim方法会把参数传给run()
run中会用到OptionsProcessor.process_stage1(args) 根据传入的参数进行一些初始话
commandLine = new GnuParser().parse(options, argv);
Properties confProps = commandLine.getOptionProperties("hiveconf");
for (String propKey : confProps.stringPropertyNames()) {
System.setProperty(propKey, confProps.getProperty(propKey));
}

Properties hiveVars = commandLine.getOptionProperties("define");
for (String propKey : hiveVars.stringPropertyNames()) {
hiveVariables.put(propKey, hiveVars.getProperty(propKey));
}

Properties hiveVars2 = commandLine.getOptionProperties("hivevar");
for (String propKey : hiveVars2.stringPropertyNames()) {
hiveVariables.put(propKey, hiveVars2.getProperty(propKey));
}

如果返回false则直接结束,返回1,也就是我们经常看到的报错信息,return code 1
类似过程还有

!oproc.process_stage2(ss) 传入session //貌似是将sql中的一些配置参数解析然后存入session

—————————— processLine(Cmd)
run中继续调用processLine(cmd)
循环解析cmd 以‘;’作为分隔符,传入processCmd(cmd)
// 读入cmd:‘;’之前的所有字符串都读入(不做任何检查),之后的都会忽略。读完后,传入processCmd处理
—————————— processCmd()
/– 读入cmd,并分情况处理,总共分为以下五种情况,根据命令的开头字符串来确定用什么方法处理。
// 1.set.. 设置operator参数,hive环境参数
// 2.quit or exit — 退出Hive环境
// 3.! 开头
// 4.dfs 开头 交给FsShell处理
// 5.hivesql 正常hivesql执行语句,我们最关心的是这里。语句交给了、、Hive真正的核心引
核心语句:ret = qp.run(cmd).getResponseCode(); qp是Driver对象

———————CliSessionState.java—————————————


执行计划:
http://blog.csdn.net/wf1982/article/details/9122543
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive是一个基于Hadoop的数据仓库基础结构,它提供了SQL查询和数据分析功能。Hive的源代码阅读是指对Hive项目的源代码进行逐行分析和理解,以深入了解Hive的内部工作原理和实现细节。 Hive的源代码阅读可以从导读开始。导读部分是Hive代码仓库中的一些重要文档和指南,它们提供了关于Hive项目的概述和指导。 首先,我们可以阅读Hive项目的README文件。该文件通常包含了对项目的介绍、功能特点和使用说明。README文件一般会介绍Hive的目标、核心组件和HiveQL查询语言等内容,为我们提供了整体了解Hive入口。 接下来,我们可以查看Hive项目中的文档目录。在这个目录下,我们可以找到各种文档、指南和设计文档,它们详细描述了Hive的不同方面和内部机制。这些文档可以帮助我们了解Hive的体系结构、数据处理流程、优化技巧等内容,为后续阅读源代码提供了必要的背景知识。 此外,还可以关注Hive项目的WIKI页面。Hive的WIKI页面常常有丰富的内容,包括开发指南、常见问题解答等。这些页面中提供了一些较为具体和实用的信息,可以帮助我们更好地理解Hive的源代码。 在阅读Hive源代码时,我们应该注重核心模块和关键类的分析。可以从查询解析器、查询优化器和执行引擎等模块开始阅读。这些模块负责将HiveQL查询转化为Hadoop任务并执行查询操作。 最后,我们还可以参考Hive源代码中的注释和代码文档。良好的代码注释可以帮助我们理解代码的意图和实现细节,而代码文档则可以提供更加详细的说明和使用方法。 综上所述,Hive源码阅读的导读包括了阅读README文件、查看文档目录和WIKI页面、重点关注核心模块和关键类的分析,以及参考代码注释和文档等内容。通过导读,我们可以为接下来的源码阅读做好准备,更好地理解Hive的工作原理和实现方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值