昨天和师兄混了一天,中午还一起做了个饭,下午来我这游泳,晚上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
——————CliDriver类——————————
主类中有主要的几个方法,当然main是入口,下图是引用别人画的
其中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
分享到:
相关推荐
通过深入学习和分析Dremio的源码,开发者不仅可以了解其工作原理,还能为自己的数据管理项目提供灵感,甚至参与到项目的改进和扩展中去。Dremio的开放源码为数据工程师和数据科学家提供了一个强大的工具,帮助他们更...
Hadoop是Apache软件基金会开发...总之,“hadoop-3.1.1-src.tar.gz”是一个宝贵的资源,涵盖了Hadoop的核心技术、设计理念以及实现细节,对于开发者、研究者和数据工程师来说,是深入了解和掌握大数据处理的重要入口。
2. **阅读源码**:从主入口点开始,逐步深入到各个组件的实现。理解RDD的生命周期、DAGScheduler如何工作、TaskScheduler如何将任务分配给Executor等关键概念。 3. **调试和实验**:在本地模式下运行Spark,设置...
这个DEMO是Hadoop初学者或开发者学习平台的基础,它提供了快速理解Hadoop工作原理和实际操作的入口。 1. **Hadoop核心组件** Hadoop由两个主要组件构成:HDFS(Hadoop Distributed File System)和MapReduce。HDFS...
"字节第四届青训营大数据基础班项目五:实现简易BI系统源码.zip" 这个标题表明这是一个与大数据相关的项目,属于字节跳动第四届青训营的大数据基础课程的一部分。关键词“项目五”暗示这是课程中的第五个实践任务,...
- Spark:Apache Spark是一个开源的大数据处理框架,以其高效、易用和可扩展性著称。 - RDD(弹性分布式数据集):Spark的核心数据结构,是存储在集群中的不可变、分区的数据集合。 - DataFrame和Dataset:Spark ...
本章节可能涵盖了如何配置和创建SparkSession,这是PySpark中执行所有操作的基础入口点。 3. **DataFrame和Dataset**:DataFrame是Spark SQL的核心概念,它是分布式的、带列名的二维表,支持各种标准SQL操作。...
这是一个基于Java的大数据分析音乐推荐系统的源代码项目。这个系统利用大数据技术来分析用户听歌习惯,从而实现个性化音乐推荐。...通过理解和研究这个项目源码,可以提升对大数据分析和推荐系统设计的理解和实践能力。
Linkis旨在解决大数据环境中计算资源的共享、调度和管理问题,它提供了一种统一的接口,使得开发者可以方便地接入多种计算引擎,如Spark、Hive、Flink等。此外,Linkis还支持多租户模式,确保不同团队和项目之间的...
Spark提供了一种快速、通用且可扩展的数据处理方式,支持批处理、交互式查询、流处理和机器学习等多种计算模式。在这个上下文中,"源码"标签暗示我们将探讨Spark的内部工作机制,而"工具"可能指的是使用Spark进行...
1. **创建SparkContext**:这是Spark应用程序的入口点,负责与集群资源管理器(如YARN或Mesos)交互,启动工作进程。 2. **定义RDD**:从数据源创建RDD,可以是HDFS、HBase或其他存储系统。 3. **转换**:对RDD应用...
Apache Spark 是一个开源的并行计算框架,它提供了一个统一的接口来处理各种数据源,包括批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)和机器学习(MLlib)。Spark 的核心设计目标是提供快速、...