presto 源码编译调试(基于presto 0.247发行版)

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进行分析解决。

image-20210321172942298

编译环境:

  1. ubuntu 18.04 操作系统(自带python环境)
  2. JDK1.8
  3. maven3.5 以上版本
  4. git
  5. 开发工具idea

基本环境的搭建网上有很多教程。这里不在扯这些。

2.克隆源码

presto 源码保存在 github 上,因为直接从 github 上克隆代码比较慢,所以我们可以先把代码库拉取到gitee在进行克隆到本地。

image-20210321172715892

克隆代码到idea或者git 命令克隆导入
命令克隆
git clone https://gitee.com/stackldy/presto.git
idea克隆代码

image-20210321174955488

3.切换分支

克隆完代码切换到0.247分支(可以通过 terminal 命令 或者 idea 可视化的 git 插件切换分支 )
git checkout 0.129

image-20210321175302228

4.maven 编译

image-20210321175429034

官网推荐我们上面的方式编译源码,上面的方式本质上是个shell 脚本,会进行maven 的重新安装,这也是官网不推荐在win下编译的一个原因,因为win无法解释运行,我们已经安装过maven ,所以不在采用直接运行官方脚本的方式安装。而是在idea终端运行如下的maven命令

mvn clean package -DskipTests # 这里需要安装maven时配置好环境变量,这里没有采用 mvn install 这条命令而是换成了 package,原因 mvn install 命令会把编译好的jar包安装到本地maven仓库,我们不需要所以直接package打包就好。 -DskipTests 忽略编译测试文件。

image-20210321182027313

5.修改运行配置

image-20210321181545720

官网已经说明了我们运行 presto 服务需要做的配置和入口,我们只需要在idea 完成相关配置,此时,我们可以先找到入口类运行下,然后在编辑配置。idea 默认是找不到多模块项目运行的入口的。

image-20210321181919650

image-20210321181954744

6.运行调试

经过上面的基本的配置,我们现在可以进行运行调试,在运行调试前我们需要做些基本配置来保证我们的正确运行和启动效率。下面的操作都是在 presto-main 模块下进行的。

1.修改config.properties的配置

image-20210321182543738

注释调上面关于加载插件的配置,我们计划配置本地编译好的插件,而不是这种加载模块代码的插件,这样可以提升我们的启动效率。

2.移动function-namespace 到最外层模块或者删除(这个模块的作用后面会进行说明)

image-20210321183039732

为什么说要删除这个模块,这里我简要说明?如果我们保留这个文件下的配置,运行都会报如下错误。

image-20210321184436293

解决上面错误的方式是放开与其相关的插件配置。

image-20210321184842145

放开后再次编译运行会报如下错误:

image-20210321185050244

解决上面这个错误需要修改源代码部分内容,具体错误原因可以参考:github-issues:https://github.com/prestodb/presto/issues/15747 目前这个bug还处于open状态。

image-20210321185241798

综上原因,我还是建议先移动目录到外部,注释调加载上述插件的配置。如果你按照上面的解决方式也可以正常运行,这样会在你配置的数据库中插入一些表信息。

image-20210321185736567

3. 复制本地插件

image-20210321183154571

通过presto-main模块的PluginMangerConfig 类我们可以观察到,presto 是加载plugin下的插件,plugin 是个相对路径,所以我们需要在presto-main下创建插件目录存放插件。

image-20210321183447658

这里我是以mysql 作为数据源的,所以这里我只放置了mysql 的插件。mysql 插件是从presto 安装包中的plugin下拷贝过来。这里放置了插件一定要注释插件加载的配置,否则会重复加载插件,但这不影响运行,只是降低了启动速度。

4.去除catalog 下无用的数据源连接配置只保留mysql相关连接

image-20210321183715799

image-20210321185929127

5.运行代码

效果如图所示:

image-20210321190119907

运行 presto-cli 进行测试效果如下: presto-cli 命令参数推荐:https://blog.csdn.net/weixin_40809627/article/details/99311654

image-20210321190349942

不支持win原因

image-20210321191530673

在源码中有个类PrestoSystemRequirements,这个类中有对环境的判断要求。关于 win下编译大家可以参考:推荐编译连接:https://blog.csdn.net/anchichun6550/article/details/101538325,主要参考第二步和第四步。其它与本文一样。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值