# presto **Repository Path**: 642179296/presto ## Basic Information - **Project Name**: presto - **Description**: github presto项目0.278版本源代码 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-19 - **Last Updated**: 2022-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README windows idea presto debug方法,请使用本项目的debug分支 ### 修改代码 **1 修改 PrestoSystemRequirements.verifyOsArchitecture** 注释掉 failRequirement("Presto requires Linux or Mac OS X (found %s)", osName); **2 修改 PrestoSystemRequirements.getMaxFileDescriptorCount** 将 maxFileDescriptorCount 的值修改为 Object maxFileDescriptorCount = 10000; ### 取消默认插件 这一步很重要,presto默认实现了一些plugin,但是这些插件有可能我们会用不到,是源码启动中如果出错可能就不太好排查。新手建议先起“纯净版server”,再适当增加需要的plugin 首先注释PluginManager类loadPlugins()方法中如下代码: ~~~java for(File file:listFiles(installedPluginsDir)){ if(file.isDirectory()){ loadPlugin(file.getAbsolutePath()); } } for(String plugin:plugins){ loadPlugin(plugin); } ~~~ 其次,将presto-main模块下面etc/catalog/目录下的所有文件移动到其他目录,如:catalog-bak。 当然也可以直接删除,但是为了以后使用,这里建议备份而不是直接删除。 最后,删除presto-main模块下面etc目录下的function-namespace文件夹(有的版本没有这个文件夹,可以直接忽略) ### 配置应用程序 **Main Class**: com.facebook.presto.server.PrestoServer **VM Options**: -ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties **Working directory**: `$MODULE_DIR$` **Use classpath of module**: presto-main ![img.png](img.png) 最后访问 http://localhost:8080 即可 ### 错误排查 报错1: SqlBaseParser 找不到,解决方式:项目根路径下运行maven命令(如遇报错参考下面其它报错):mvn antlr4:antlr4 ## 运行插件 后续便是添加额外的plugin并运行,这一块又分为两种方式,一是编译好相关plugin的jar包,然后放到指定的文件夹, 最后让presto服务端启动后去读。二是直接将自定义plugin模块的源码集成到presto源码中, 运行源码的同时直接运行该plugin。因为第二种方式没有彻底走通,所以这里仅介绍第一种方式 下载presto对应版本编译好的tar包,并解压(https://repo1.maven.org/maven2/com/facebook/presto/presto-serve) 在任意位置创建plugins文件夹,这里我创建的路径是D:\plugins。然后将上一步解压后plugin文件夹中的mysql目录拷贝到新建的文件夹中 修改plugin-main模块etc/catalog目录下mysql的配置文件,注意这里要讲上面配置的后缀名去掉,如下 ![img_1.png](img_1.png) 代码中修改plugin加载的位置,首先是修改PluginManager类构造器方法中plugin目录所在的位置 ![img_2.png](img_2.png) 其次是放开pluginManager类loadPlugins方法中在前面操作中注释掉的代码。 ![img_3.png](img_3.png) 注释presto-main模块etc目录下config.properties文件中的plugin.bundles属性,如果不注释掉,在开启plugin加载时会加载该路径指定的模块 ![img_4.png](img_4.png) 运行后出现如下日志,即可初步判断mysql plugin添加成功 ![img_5.png](img_5.png)