hive-3.0.0源码编译详解

简介: hive-3.0.0源码编译详解

前言

看我往期文章的朋友都会发现我聊SQL的时候喜欢拿一份Hive的源码来做参考,其实在我看来,对于技术人员来说,源码其实就是最好的参考资料了,不管是网络上面有的或者没有的,源码都可以给你最原汁原味的解释。Hive版本3.x其实出来很久了,本文结合编译的过程,顺便聊聊编译的那些事。

准备工作

在入手一份源码之前,首先要知道源码是从哪里可以搞到,hive代码首先是可以在github上面下载的,搜索关键字 "hive github "

其实发现cdh的版本也是可以搜索到,问题不大!

当然hive源码包也有自己的地址的:

http://archive.apache.org/dist/hive/hive-3.0.0/

把包拿过来即可。

编译

编译这个过程事先学习一下hive的源码结构,我们在pom.xml下面找到这么一些字样,这个其实代表了我们可以不同的编译选项,里面可以在我们参数中加上:

<profiles>
    <profile>
      <id>thriftif</id>
      ......
      </build>
    </profile>

    <profile>
      <id>sources</id>
      ......
    </profile>

    <profile>
      <id>javadoc</id>
      ......
    </profile>

    <profile>
    <id>findbugs</id>
    ......
      </build>
      <reporting>
        ......
    </profile>
    <profile>
      <!-- Windows-specific settings to allow unit tests to work -->
      <id>windows-test</id>
      <activation>
        <os>
          <family>Windows</family>
       </os>
      </activation>
       ......
      </build>
     
  </profiles>

我组合出来的命令如下:

mvn clean package -Pdist -DskipTests -Dmaven.javadoc.skip=true

这个命令就是对源码解释就是
打包-Pdist,
跳过单元测试-DskipTests 
跳过文档生成 -Dmaven.javadoc.skip=true
这样子一套比较高效的组合就可以了

接下来就是编译过程

可能出现的问题有以下原因:

1、默认的maven仓库不能用,表现为网络不通,这个建议切换到阿里云的网络环境下面就好

2、包冲突、这个可能是本机有一些包没同步,这个建议先有一份干净的环境

剩下的就是结果了,我这边目测都比较顺利 ^^

[INFO] Reactor Summary for Hive 3.1.2:
[INFO] 
[INFO] Hive Upgrade Acid .................................. SUCCESS [  5.376 s]
[INFO] Hive ............................................... SUCCESS [  0.276 s]
[INFO] Hive Classifications ............................... SUCCESS [  0.463 s]
[INFO] Hive Shims Common .................................. SUCCESS [  1.712 s]
[INFO] Hive Shims 0.23 .................................... SUCCESS [  2.198 s]
[INFO] Hive Shims Scheduler ............................... SUCCESS [  1.254 s]
[INFO] Hive Shims ......................................... SUCCESS [  0.931 s]
[INFO] Hive Common ........................................ SUCCESS [  6.785 s]
[INFO] Hive Service RPC ................................... SUCCESS [  2.745 s]
[INFO] Hive Serde ......................................... SUCCESS [  4.828 s]
[INFO] Hive Standalone Metastore .......................... SUCCESS [ 27.272 s]
[INFO] Hive Metastore ..................................... SUCCESS [  3.241 s]
[INFO] Hive Vector-Code-Gen Utilities ..................... SUCCESS [  0.398 s]
[INFO] Hive Llap Common ................................... SUCCESS [  3.268 s]
[INFO] Hive Llap Client ................................... SUCCESS [  2.517 s]
[INFO] Hive Llap Tez ...................................... SUCCESS [  2.838 s]
[INFO] Hive Spark Remote Client ........................... SUCCESS [  3.582 s]
[INFO] Hive Query Language ................................ SUCCESS [ 47.177 s]
[INFO] Hive Llap Server ................................... SUCCESS [  5.972 s]
[INFO] Hive Service ....................................... SUCCESS [  6.418 s]
[INFO] Hive Accumulo Handler .............................. SUCCESS [  4.462 s]
[INFO] Hive JDBC .......................................... SUCCESS [ 17.497 s]
[INFO] Hive Beeline ....................................... SUCCESS [  3.844 s]
[INFO] Hive CLI ........................................... SUCCESS [  3.014 s]
[INFO] Hive Contrib ....................................... SUCCESS [  2.307 s]
[INFO] Hive Druid Handler ................................. SUCCESS [02:31 min]
[INFO] Hive HBase Handler ................................. SUCCESS [ 53.683 s]
[INFO] Hive JDBC Handler .................................. SUCCESS [  6.051 s]
[INFO] Hive HCatalog ...................................... SUCCESS [ 26.763 s]
[INFO] Hive HCatalog Core ................................. SUCCESS [ 18.106 s]
[INFO] Hive HCatalog Pig Adapter .......................... SUCCESS [  3.760 s]
[INFO] Hive HCatalog Server Extensions .................... SUCCESS [ 31.195 s]
[INFO] Hive HCatalog Webhcat Java Client .................. SUCCESS [  3.653 s]
[INFO] Hive HCatalog Webhcat .............................. SUCCESS [ 15.729 s]
[INFO] Hive HCatalog Streaming ............................ SUCCESS [  4.264 s]
[INFO] Hive HPL/SQL ....................................... SUCCESS [ 11.598 s]
[INFO] Hive Streaming ..................................... SUCCESS [  2.985 s]
[INFO] Hive Llap External Client .......................... SUCCESS [  3.088 s]
[INFO] Hive Shims Aggregator .............................. SUCCESS [  0.152 s]
[INFO] Hive Kryo Registrator .............................. SUCCESS [  2.426 s]
[INFO] Hive TestUtils ..................................... SUCCESS [  0.234 s]
[INFO] Hive Packaging ..................................... SUCCESS [ 55.682 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  09:11 min
[INFO] Finished at: 2021-11-07T16:43:29+08:00```

导入Idea

一份热气腾腾的源码环境就搞好了~~

目录
相关文章
|
2月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
145 0
|
9月前
|
SQL 分布式计算 Java
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
HIVE3 兼容spark3.XX,编译过程
HIVE3 兼容spark3.XX,编译过程
276 0
HIVE3 兼容spark3.XX,编译过程
|
SQL 存储 分布式计算
Hive SQL的底层编译过程详解(一)
本文结构采用宏观着眼,微观入手,从整体到细节的方式剖析 Hive SQL 底层原理。第一节先介绍 Hive 底层的整体执行流程,然后第二节介绍执行流程中的 SQL 编译成 MapReduce 的过程,第三节剖析 SQL 编译成 MapReduce 的具体实现原理。
421 0
Hive SQL的底层编译过程详解(一)
|
SQL 存储 分布式计算
Hive简介及源码编译
Hive是一个基于Hadoop的数据仓库,可以将结构化数据映射成一张表,并提供类SQL的功能,最初由Facebook提供,使用HQL作为查询接口、HDFS作为存储底层、MapReduce作为执行层,设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据,2008年facebook把Hive项目贡献给Apache。Hive提供了比较完整的SQL功能(本质是将SQL转换为MapReduce),自身最大的缺点就是执行速度慢。Hive有自身的元数据结构描述,可以使用MySql\ProstgreSql\oracle 等关系型数据库来进行存储,但请注意Hive中的所有数据都存储在HDFS中
388 0
Hive简介及源码编译
|
SQL 分布式计算 HIVE
Hive SQL的底层编译过程详解(二)
本文结构采用宏观着眼,微观入手,从整体到细节的方式剖析 Hive SQL 底层原理。第一节先介绍 Hive 底层的整体执行流程,然后第二节介绍执行流程中的 SQL 编译成 MapReduce 的过程,第三节剖析 SQL 编译成 MapReduce 的具体实现原理。
301 0
Hive SQL的底层编译过程详解(二)
|
SQL HIVE
Hive SQL的编译过程(转载)
转自:https://www.cnblogs.com/zhzhang/p/5691997.html
1055 0
|
SQL HIVE
Hive metastore源码阅读(三)
  上次写了hive metastore的partition的生命周期,但是简略概括了下alter_partition的操作,这里补一下alter_partition,因为随着项目的深入,发现它涉及的地方较多,比如insert into 时如果路径存在情况下会调用alter_partition,调用insert overwrite语句时,也会调用该方法,   入口依旧是Hive.
1233 0
|
SQL HIVE
Hive metastore源码阅读(二)
  最近随着项目的深入,发现hive meta有些弊端,就是你会发现它的元数据操作与操作物理集群的代码耦合在一起,非常不利于扩展。比如:在create_table的时候同时进行路径校验及创建,如下代码: 1 if (!TableType.
1448 0
|
SQL Apache 数据库
Hive metastore源码阅读(一)
  不要问我为什么,因为爱,哈哈哈哈。。。进入正题,最近做项目顺带学习了下hive metastore的源码,进行下知识总结。   hive metastore的整体架构如图:      一、组成结构:   如图我们可以看到,hive metastore的组成结构分为 客户端 服务端 ,那么下来我们逐一进行分析:   1、客户端       从代码的角度来看:尼玛太多了。
1540 0