ide单步调戏presto

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_27545249/article/details/72852148
1-下载
2- windows下编译
2-1 pom文件修改
2-2 编译
2-3 导入到idealij
3- 单步调试配置
4- 执行调试
4-1 文件修改
4-2 启动调试
4-3 客户端连接
4-4 设置断点
5 mac或者linux下
1-下载
git上搜索presto,找到prestodb下的presto,使用git clone到本地

2- windows下编译
2-1 pom文件修改
打开presto根目录下的pom文件,找到代码风格插件,注释成以下形式:

如果不注释会报很多编码风格的错,不过在mac下不会有问题。

关于maven子项目的处理

注释成如图所示的样子,因为如果要看presto sql层代码的话,很多插件可以直接使用编译好的jar报,不需要自己编译,自己编译要下载很多东西,比较慢。如果要看插件的代码,到时直接在ideallij里关联源码即可。

2-2 编译
不用如果要看代码,不用install,不用assembly,只需要生成ideallij工程即可,所以在cmd中输入:

mvn idea:idea -DskipTests
1
编译完成会显示所有相关工程success

2-3 导入到idealij
选择从现有代码新建工程,选择maven类型,选择刚刚编译成功的presto工程,确定之后,有一个resolve 依赖的过程,因为刚才用maven编译过,所以这步不会下载东西,只在本地maven仓库中匹配依赖。导入成功后,没有错误,可以进行下一步。


3- 单步调试配置
在idealij中,点击run->edit configuration->+application
配置成如下:


其中的vm options是:
-ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties

保存

4- 执行调试
4-1 文件修改
PrestoSystemRequirements
注释掉68行对操作系统的限制:
        else {
//            failRequirement("Presto requires Linux or Mac OS X (found %s)", osName);
        }
1
2
3
修改文件描述符大小限制(手动改成10000):
        try {
            MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
//            Object maxFileDescriptorCount = mbeanServer.getAttribute(ObjectName.getInstance(OPERATING_SYSTEM_MXBEAN_NAME), "MaxFileDescriptorCount");
            Object maxFileDescriptorCount = 10000;
            return OptionalLong.of(((Number) maxFileDescriptorCount).longValue());
        }
1
2
3
4
5
6
修改plugin目录
下载presto-server-0.177.tar.gz文件,解压到任意目录,把这里边的plugin目录作为ideallij工程的plugin目录,需要打开文件PluginManagerConfig.java,做如下修改:
//    private File installedPluginsDir = new File("plugin");
    private File installedPluginsDir = new File("E:\\bigdata\\presto\\presto-server-0.177\\presto-server-0.177\\plugin");
1
2
打开PluginManager.java, 做如下修改:

//        for (String plugin : plugins) {
//            loadPlugin(plugin);
//        }
1
2
3
4-2 启动调试
启动成功,在浏览器打开:http://localhost:8080 ,可以看到presto监控界面。
如果只想调试presto的sql层的代码(网络、节点发现、sql解析-调度-执行)等,则可以只在etc的catalog下保留tpch这个配置,要不然会报hadoop的一些错误

4-3 客户端连接
可以直接下载:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.177/presto-cli-0.177-executable.jar

如果想逼格高一点,就进入本地的presto目录,进入presto-cli子工程,执行:mvn install -DskipTests,编译成功,可以看到target目录下的presto-cli-0.178-SNAPSHOT-executable.jar文件

然后执行:

java -jar presto-cli-0.178-SNAPSHOT-executable.jar --server localhost:8080 --catalog tpch
1
连接成功后在客户端执行show schemas; use sf1; select count(*) from lineitem group by returnflag;
显示执行成功。

4-4 设置断点
打开ScanFilterAndProjectOperator.java文件,找到getoutput方法,在方法第一行打断点,再次在客户端执行查询,在断点停住,好了,可以开心的调戏presto了

5 mac或者linux下
如果实在mac或者linux下的ideallij,那么就不需要这么复杂了,直接按照:
https://github.com/Teradata/presto
这个文档里的配置方法,就能把presto运行起来,欢乐的看代码了


参考文献资料:

https://blog.csdn.net/sinat_27545249/article/details/72852148

https://blog.csdn.net/anchichun6550/article/details/101538325

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值