`
安铁辉
  • 浏览: 244887 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

——————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-oss-intelli-4.1.3-x86.zip

    通过深入学习和分析Dremio的源码,开发者不仅可以了解其工作原理,还能为自己的数据管理项目提供灵感,甚至参与到项目的改进和扩展中去。Dremio的开放源码为数据工程师和数据科学家提供了一个强大的工具,帮助他们更...

    hadoop-3.1.1-src.tar.gz

    Hadoop是Apache软件基金会开发...总之,“hadoop-3.1.1-src.tar.gz”是一个宝贵的资源,涵盖了Hadoop的核心技术、设计理念以及实现细节,对于开发者、研究者和数据工程师来说,是深入了解和掌握大数据处理的重要入口。

    spark(svn自动下载)源码

    2. **阅读源码**:从主入口点开始,逐步深入到各个组件的实现。理解RDD的生命周期、DAGScheduler如何工作、TaskScheduler如何将任务分配给Executor等关键概念。 3. **调试和实验**:在本地模式下运行Spark,设置...

    cs245-as1-master_Hadoop运行demo_Hadoop学习demo_DEMO_

    这个DEMO是Hadoop初学者或开发者学习平台的基础,它提供了快速理解Hadoop工作原理和实际操作的入口。 1. **Hadoop核心组件** Hadoop由两个主要组件构成:HDFS(Hadoop Distributed File System)和MapReduce。HDFS...

    字节第四届青训营大数据基础班项目五:实现简易BI系统源码.zip

    "字节第四届青训营大数据基础班项目五:实现简易BI系统源码.zip" 这个标题表明这是一个与大数据相关的项目,属于字节跳动第四届青训营的大数据基础课程的一部分。关键词“项目五”暗示这是课程中的第五个实践任务,...

    Python大数据处理库 PySpark实战-源代码.rar

    - Spark:Apache Spark是一个开源的大数据处理框架,以其高效、易用和可扩展性著称。 - RDD(弹性分布式数据集):Spark的核心数据结构,是存储在集群中的不可变、分区的数据集合。 - DataFrame和Dataset:Spark ...

    Python3实战Spark大数据分析及调度-第8章 Spark SQL.zip

    本章节可能涵盖了如何配置和创建SparkSession,这是PySpark中执行所有操作的基础入口点。 3. **DataFrame和Dataset**:DataFrame是Spark SQL的核心概念,它是分布式的、带列名的二维表,支持各种标准SQL操作。...

    Java基于大数据分析的音乐推荐系统源码.zip

    这是一个基于Java的大数据分析音乐推荐系统的源代码项目。这个系统利用大数据技术来分析用户听歌习惯,从而实现个性化音乐推荐。...通过理解和研究这个项目源码,可以提升对大数据分析和推荐系统设计的理解和实践能力。

    Linkis分布式服务框架 v1.3.2.zip

    Linkis旨在解决大数据环境中计算资源的共享、调度和管理问题,它提供了一种统一的接口,使得开发者可以方便地接入多种计算引擎,如Spark、Hive、Flink等。此外,Linkis还支持多租户模式,确保不同团队和项目之间的...

    spark

    Spark提供了一种快速、通用且可扩展的数据处理方式,支持批处理、交互式查询、流处理和机器学习等多种计算模式。在这个上下文中,"源码"标签暗示我们将探讨Spark的内部工作机制,而"工具"可能指的是使用Spark进行...

    spark笔记整理,2022年3月16日

    1. **创建SparkContext**:这是Spark应用程序的入口点,负责与集群资源管理器(如YARN或Mesos)交互,启动工作进程。 2. **定义RDD**:从数据源创建RDD,可以是HDFS、HBase或其他存储系统。 3. **转换**:对RDD应用...

    Spark-PySpark-大数据

    Apache Spark 是一个开源的并行计算框架,它提供了一个统一的接口来处理各种数据源,包括批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)和机器学习(MLlib)。Spark 的核心设计目标是提供快速、...

Global site tag (gtag.js) - Google Analytics