继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

presto提交查询

慕哥9229398
关注TA
已关注
手记 1287
粉丝 200
获赞 917

提交查询的步骤

1、获取SQL

2、发送restful请求给coordinator,并返回结果

3、cli循环分批读取查询结果并显示

源码解析

CLI客户端启动类就Presto  main 方法  彩蛋  如果启动presto CLI 的时候有 --version or --help 将提示帮助信息

否则调用Console.run()  会生成一个查询执行包装类QueryRunner,后续的启动和执行都是通过该类

启动presto CLI时,如果指定了 --execute or --file 读取SQL 否则在CLI端输入SQL

SQL语句的提交和执行通过QueryRunner的 executeCommand方法, 其中 QueryRunner.startQuery初始执行,通过Query.renderOutput循环发送restful请求分批获取查询结果。

startQuery 中new statementClient对象,构建Request(通过session中的server值 即为coordinator的URI,进而将SQL以restful请求发送给coordinator 通过statementResource类) 并接收response

renderOutput  会根据interactive标识决定是否实时更新数据,如果距离上次更新超过0.5s 则更新。不管是否实时更新都会调用client.advance(),改方法通过coordinator返回的nextResultUri向coordinator继续发请求,来分批获得查询结果

提交查询的流程

client发请求给coordinator ,coordinator返回结果和nextResultUri,如果没有结果了结束,如果nextResultUri不为空继续发请求给coordinator。



作者:翠花上酸奶
链接:https://www.jianshu.com/p/466190c75cad


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP