1.下载源码
从github
上下载trino-363
的源码,地址为https://github.com/trinodb/trino,记得切换Tags
为363,然后点击下载.zip
文件
2.编译
①需要的环境:
- Mac OS X or Linux
- Java 11.0.11+, 64-bit
- Docker
②编译过程
因为公司的服务器不能连接外网,这里只能在windows
下编译把项目需要的jar
包弄到私服上去,这里我在windows
下用gitbash
编译,然后有几个模块总是编译不成功,然后放到idea中,通过maven
下载依赖的jar包自动下载到私服中,然后在linux
下在trino-363
目录下运行 ./mvnw clean install -DskipTests
注意这里会报错误,.git
目录不存在。解决方案是在根目录的pom.xml
文件中加入这个。
<pluginManagement>
<plugins>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</pluginManagement>
③注意事项
(1)在编译过程中我发现需要下载metadata.xml
文件,可是服务器不能连外网,导致这里卡了很久。一次编译花费的时间超过半小时,我从网上找了很多解决方案,最后只有 ./mvnw clean install -DskipTests -o
有用,注意这里必须在服务器上已经下载好了依赖,才能采用离线编译的方法。就是第一次编译的时间要花很久,后面就可以采用离线编译了。
(2)在配置动态数据源,然后编译时,报错一个module
顺序不对,这个好改,直接按照提示把顺序改了就行(这里其实也可以通过pom.xml
文件让他不检查顺序,但是我这样改快一点)。然后还有一个麻烦的事,就是代码风格不对仍然编译不了,这里我网上找了很多办法都不行。最后去trino
社区提问,幸好有人回答了我,也解决了这个问题。解决方案是在根目录的pom.xml
文件中加上这个
<properties>
<air.check.skip-all>true</air.check.skip-all>
<air.check.skip-basic>${air.check.skip-all}</air.check.skip-basic>
<air.check.skip-extended>${air.check.skip-all}</air.check.skip-extended>
</properties>
3.运行
编译好了怎么运行呢,这是一个问题,于是我从官网https://trino.io/上找到了可以运行的jar
包。然后我按照官网上的办法运行成功。可是我该怎么运行自己编译打包的东西呢,我先是写脚本把打包好的东西按照官网上下载后的那种路径组织一下(这个好多呀),我写cp
命令到脚本一个一个复制,然后有个jar
包找不到,我用find / -name *.jar
找它,然后我发现了这个父目录和官网上下载下来的是一样的,终于不用写脚本拷贝了!然后就是按照官网上的配置etc
文件夹下面的东西。然后成功连接上了postgresql
数据库!
编译好的可运行文件的目录为trino-363/core/trino-server/target/trino-server-363/
,用bin/launcher run
命令运行即可
4.udf
函数
参照官网,然后在pom.xml
文件中加入这个,用mvn clean compile assembly:assembly
将依赖的jar
包一起打包成一个大的jar
包
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
</plugins>
</build>
然后在trino-server-363
文件夹下的plugin
文件夹下创建一个新的目录udf
,将这个大的jar
包放到这个目录下,重启trino
就好了。
5.动态配置数据源
参考https://blog.csdn.net/z275598733/article/details/119218079就可以了