概述
presto 源码编译调试(基于presto 0.247发行版)
1. 环境准备
presto 进行源码编译,首先要去 github 查看presto的编译运行说明。通过阅读README.md 说明,我们可以了解到源码编译的
基本要求。presto 支持在 Macos 和 Linux 下编译,这不代表它无法在 windows 下编译,java是跨平台的,presto 要在windows下编译需要多做一些额外的配置和源码的修改,为了避免麻烦,所以下面直接选择在 ubuntu 虚拟机修改。关于如何在win 下编译,网上也有一些教程,大家可自行百度查阅。
这里选择了 0.247 发型板,0.247 目前还算是一个比较新的发型版,目前最新的稳定版是0.249,比较与0.247差别不大。一些老的版本不推荐编译,因为里面许多模块相较于新版有太多缺少。这里编译0.247 版本还有一个原因是我搭建环境选择的0.247版本。其他新版本的编译目前同样支持。遇到一些问题可以结合百度和github的issues进行分析解决。
编译环境:
- ubuntu 18.04 操作系统(自带python环境)
- JDK1.8
- maven3.5 以上版本
- git
- 开发工具idea
基本环境的搭建网上有很多教程。这里不在扯这些。
2.克隆源码
presto 源码保存在 github 上,因为直接从 github 上克隆代码比较慢,所以我们可以先把代码库拉取到gitee在进行克隆到本地。
克隆代码到idea或者git 命令克隆导入
命令克隆
git clone https://gitee.com/stackldy/presto.git
idea克隆代码
3.切换分支
克隆完代码切换到0.247分支(可以通过 terminal 命令 或者 idea 可视化的 git 插件切换分支 )
git checkout 0.129
4.maven 编译
官网推荐我们上面的方式编译源码,上面的方式本质上是个shell 脚本,会进行maven 的重新安装,这也是官网不推荐在win下编译的一个原因,因为win无法解释运行,我们已经安装过maven ,所以不在采用直接运行官方脚本的方式安装。而是在idea终端运行如下的maven命令
mvn clean package -DskipTests # 这里需要安装maven时配置好环境变量,这里没有采用 mvn install 这条命令而是换成了 package,原因 mvn install 命令会把编译好的jar包安装到本地maven仓库,我们不需要所以直接package打包就好。 -DskipTests 忽略编译测试文件。
5.修改运行配置
官网已经说明了我们运行 presto 服务需要做的配置和入口,我们只需要在idea 完成相关配置,此时,我们可以先找到入口类运行下,然后在编辑配置。idea 默认是找不到多模块项目运行的入口的。
6.运行调试
经过上面的基本的配置,我们现在可以进行运行调试,在运行调试前我们需要做些基本配置来保证我们的正确运行和启动效率。下面的操作都是在 presto-main 模块下进行的。
1.修改config.properties的配置
注释调上面关于加载插件的配置,我们计划配置本地编译好的插件,而不是这种加载模块代码的插件,这样可以提升我们的启动效率。
2.移动function-namespace 到最外层模块或者删除(这个模块的作用后面会进行说明)
为什么说要删除这个模块,这里我简要说明?如果我们保留这个文件下的配置,运行都会报如下错误。
解决上面错误的方式是放开与其相关的插件配置。
放开后再次编译运行会报如下错误:
解决上面这个错误需要修改源代码部分内容,具体错误原因可以参考:github-issues:https://github.com/prestodb/presto/issues/15747 目前这个bug还处于open状态。
综上原因,我还是建议先移动目录到外部,注释调加载上述插件的配置。如果你按照上面的解决方式也可以正常运行,这样会在你配置的数据库中插入一些表信息。
3. 复制本地插件
通过presto-main模块的PluginMangerConfig 类我们可以观察到,presto 是加载plugin下的插件,plugin 是个相对路径,所以我们需要在presto-main下创建插件目录存放插件。
这里我是以mysql 作为数据源的,所以这里我只放置了mysql 的插件。mysql 插件是从presto 安装包中的plugin下拷贝过来。这里放置了插件一定要注释插件加载的配置,否则会重复加载插件,但这不影响运行,只是降低了启动速度。
4.去除catalog 下无用的数据源连接配置只保留mysql相关连接
5.运行代码
效果如图所示:
运行 presto-cli 进行测试效果如下: presto-cli 命令参数推荐:https://blog.csdn.net/weixin_40809627/article/details/99311654
不支持win原因
在源码中有个类PrestoSystemRequirements,这个类中有对环境的判断要求。关于 win下编译大家可以参考:推荐编译连接:https://blog.csdn.net/anchichun6550/article/details/101538325,主要参考第二步和第四步。其它与本文一样。
最后
以上就是聪明白昼为你收集整理的presto 源码编译调试(基于presto 0.247发行版)presto 源码编译调试(基于presto 0.247发行版)的全部内容,希望文章能够帮你解决presto 源码编译调试(基于presto 0.247发行版)presto 源码编译调试(基于presto 0.247发行版)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复