一、编译准备

1.下载源码包

https://github.com/apache/hive/archive/refs/tags/rel/release-2.3.7.zip

或使用git直接拉取

无法解决科学问题请点

2.环境

JDK 1.8.0_202

Apache Maven 3.6.3

git 2.32.0 (编译过程需要执行bash,cmd会报错)

二、执行操作与主要问题

1.操作

在已经解压过的Hive源码包下启动git bash 运行一下代码

mvn clean package -Phadoop-2,dist 这是官网给出的编译语句,根据基于的hadoop版本填入数字

mvn clean package -Phadoop-2 -DskipTests 跳过测试

mvn -Phadoop-2 -Pdist -DskipTests -Dmaven.javadoc.skip=true clean package 在上面的基础上跳过文档生成

如果显示Hadoop依赖问题报错可以去掉hadoop项 mvn clean package -Pdist -DskipTests

2.主要问题

(1).pentaho-aggdesigner-algorithm:jar缺失



这个问题基本编译Hive的都会遇到,根本原因是阿里云镜像jar包索引不明,按照其它方法提供的更改POM文件中spring镜像仓库依然无法下载jar包,最终手动下载安装成功

mvn install:install-file -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-algorithm -Dversion=5.1.5-jhyde -Dpackaging=jar -Dfile=pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar(jar绝对路径)

(2).Java环境问题



经过几次测试结合其他总结经验发现,JDK验证(java -version,javac,java)都正常的情况依然会有类似报错

可以在执行编译语句前设置JDK路径(很多时候mvn默认是JRE)set JAVA_HOME=你的JDK绝对路径

解决上述问题基本就编译成功

在同等的环境下使用linux(ubuntu和CentOS)编译均不会出现win下的各种环境问题

直接使用IDE编译可能会出现更多JAR包问题,如果仅仅只是Hive的框架依赖如Hadoop_HOME和Druid_HOME,则不影响测试

如果不需要对整个Hive测试,可以仅编译单个组件。例如:ql[hive-exec]、llap-common

Hive源码上手及问题解决的更多相关文章

  1. 自定义函数hello,并注册到hive源码中并重新编译

    1 编写自己的udf方法hello package cn.zhangjin.hive.udf; import org.apache.hadoop.hive.ql.exec.Description; i ...

  2. Hive源码解析

    date: 2020-07-08 15:12:00 updated: 2020-08-21 17:38:00 Hive源码解析 入口:hive-cli-1.1.0-cdh5.14.4.jar!/org ...

  3. 利用hive源码解析sql查了哪些表哪些字段

    在hiveserver2中使用了org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer对抽象语法树(AST)进行语义分析,分析的过程可以得出hive查 ...

  4. Android关联源码support-v4的问题解决

    如果在有用到过viewpager或者fragmentActivity等一些v4包下的类,当我们按F3时无法查看到源码,这个时候就需要我们关联该源码,该源码的关联与android源码的关联不一样. 大家 ...

  5. .net framework 源码调试 与 问题解决

    调试方式有二种, 看官方资料就OK. 官方地址: http://referencesource.microsoft.com/serversetup.aspx 1. 使用配置在线地址安装 2. 下载安装 ...

  6. hive源码之新建一个coroutine

    最近由于项目需要读了一下云风老大的hive项目代码,因为对lua只有熟悉的水平,下面的东西必然多多错误:),只为记录. lua_State *sL = schedule_newtask(L); str ...

  7. 【转】Android 4.3源码下载及问题解决

    [html] view plaincopy 1 2 3 4 5 6 7 8 9 10 11 jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ cat /et ...

  8. hive 源码笔记(1):命令行执行的主流程。

    1. 'hive'命令是(默认为hive跟目录)./bin下的一个shell脚本,依次加载 ./bin/hive-config.sh, ./conf/hive-env.sh, 设置与hadoop.sp ...

  9. Hive源码分析(1)——HiveServer2启动过程

    1.想了解HiveServer2的启动过程,则需要找到启动HiveServer2的入口,hive服务的启动命令为hive --service HiveServer2,通过分析$HIVE_HOME/bi ...

随机推荐

  1. android Room数据库仓库模式

  2. python rpc 的实现

    所谓RPC,是远程过程调用(Remote Procedure Call)的简写,网上解释很多,简单来说,就是在当前进程调用其他进程的函数时,体验就像是调用本地写的函数一般.本文实现的是在本地调用远端的 ...

  3. GO学习-(22) Go语言之依赖管理

    Go语言之依赖管理 Go语言的依赖管理随着版本的更迭正逐渐完善起来. 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面.这就导致了同一个库只能保存一个 ...

  4. Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法

    Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法   之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...

  5. GPU自动调度卷积层

    GPU自动调度卷积层 本文对GPU使用自动调度程序. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,无需任何调度命令或模板.自动调度程序 ...

  6. C++ 扩展 Op

    C++ 扩展 Op 本文将介绍如何使用 C++ 扩展 Op,与用 Python 扩展 Op 相比,使用 C++ 扩展 Op,更加灵活.可配置的选项更多,且支持使用 GPU 作为计算设备.一般可使用 P ...

  7. FFmpeg集成到GPU

    FFmpeg集成到GPU GPU加速视频处理集成到最流行的开源多媒体工具中. FFmpeg是最流行的开源多媒体操作工具之一,它有一个插件库,可以应用于音频和视频处理管道的各个部分,并在世界各地得到广泛 ...

  8. A,B,C,D分别为不同的整数,满足以下乘法公式,求A,B,C,D的值

    问题:A,B,C,D分别为不同的整数,满足以下乘法公式,求A,B,C,D的值 解题思路: 由题意可知A,B,C,D为不同的整数,则A!=B,A!=C,A!=D,B!=C,B!=D,C!=D 再由给出公 ...

  9. JUC 并发编程--10, 阻塞队列之--LinkedBlockingDeque 工作窃取, 代码演示

    直接上代码 class LinkedBlockingDequeDemo { // 循环是否结束的开关 private static volatile boolean flag1 = true; pri ...

  10. Django(64)频率认证源码分析与自定义频率认证

    前言 有时候我们发送手机验证码,会发现1分钟只能发送1次,这是做了频率限制,限制的时间次数,都由开发者自己决定 频率认证源码分析 def check_throttles(self, request): ...