【大数据】Presto(Trino)REST API 与执行计划介绍

这篇具有很好参考价值的文章主要介绍了【大数据】Presto(Trino)REST API 与执行计划介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

Presto(现在叫Trino)是一个分布式SQL查询引擎,它允许用户在多个数据源上执行查询。Presto本身是一个独立的Java程序,可以通过REST API与其他应用程序进行通信。

Presto的REST API是一组HTTP接口,可以用于与Presto服务器进行通信,并提交查询请求、获取查询结果等。以下是Presto REST API的一些常见用途:

  • 执行SQL查询:使用REST API,可以提交SQL查询请求,并从Presto服务器获取查询结果。

  • 获取查询进度:使用REST API,可以获取当前查询的进度和状态,例如查询已经执行的百分比、预计完成时间等。

  • 查询元数据:使用REST API,可以获取Presto服务器上的表和列的元数据信息,例如表的名称、列的数据类型等。

  • 管理Presto集群:使用REST API,可以管理Presto集群中的节点,例如添加或删除节点,重新启动节点等。

  • 获取集群状态:使用REST API,可以获取Presto集群的状态、版本号等信息。

Presto REST API使用JSON格式进行数据交互,并提供了许多API端点以满足不同的需求。除此之外,Presto REST API还提供了一些安全控制和权限管理功能,例如对访问API的用户进行身份验证、控制用户的操作权限等。

总之,Presto REST API提供了一种简单、快速、可靠地与Presto进行通信的方式,为Presto的用户提供了更多自由、灵活的操作空间。

presto查看执行计划,大数据,Presto,SQL,大数据,presto,sql

二、环境准备

如已经有环境了,可以忽略,如想快熟部署Presto(Trino)环境可参考我这篇文章:【大数据】通过 docker-compose 快速部署 Presto(Trino)保姆级教程

docker exec -it trino-coordinator bash

# --catalog:数据源 --schema:数据库
${TRINO_HOME}/bin/trino-cli --server http://trino-coordinator:8080 --user=hadoop

三、常用 REST API

以下是一些常见的Presto REST API端点和用途:

  • /v1/catalog:从Presto服务器获取所有数据源的元数据信息,例如数据源名称、表名、列名、数据类型等。

  • /v1/query:提交一个SQL查询请求,Presto服务器会立即返回一个查询ID,并在后台执行查询。使用这个ID,可以获取查询的状态和结果。

  • /v1/query/{queryId}/status:获取查询的状态信息,例如查询是否已经完成、已经执行的百分比等。

  • /v1/query/{queryId}/results:获取查询的结果,以JSON格式返回。这个端点可以多次调用,以获取查询的不同结果部分。

  • /v1/query/{queryId}/cancel:取消正在执行的查询请求。

  • /v1/cluster:获取Presto集群的所有节点信息,包括节点IP地址、端口号、工作状态等。

  • /v1/info:获取Presto服务器的版本号、构建时间、运行时信息等。

  • /v1/stats:获取Presto服务器的使用统计信息,例如查询执行次数、查询响应时间、查询失败次数等。

通过使用这些REST API端点,可以方便地与Presto服务器进行交互,并对Presto进行控制和管理。同时,Presto REST API还提供了若干参数选项和高级功能,可以让用户对Presto服务器的行为进行更加精细的控制和优化。

1)worker 节点优雅退出

官方文档:https://trino.io/docs/current/admin/graceful-shutdown.html

Trino 有一个优雅的关闭 API,可以专门用于 以确保它们在不影响正在运行的查询的情况下终止,给定 足够的宽限期。

# 睡眠 shutdown.grace-period,默认为 2 分钟。如有任务直到所有活动任务完成。
# 关闭应用程序。
curl -v -X PUT -d '"SHUTTING_DOWN"' -H "Content-type: application/json" \
    http://worker:8080/v1/info/state

# 示例:
curl -v -X PUT -d '"SHUTTING_DOWN"' -H "Content-type: application/json" \
    http://docker-compose-presto-trino-worker-2:8080/v1/info/state

2)提交SQL查询请求

curl --request POST \
--url http://presto-server:8080/v1/query \
--header 'content-type: application/json' \
--data '{
    "query": "SELECT COUNT(*) FROM schema.table",
    "timezone": "Asia/Shanghai"
}'

此命令向Presto服务器提交一个SQL查询请求,查询的SQL语句是"SELECT COUNT(*) FROM schema.table",时区设置为"Asia/Shanghai"。执行成功后,Presto服务器会立即返回一个查询ID

3)获取查询状态

curl http://presto-server:8080/v1/query/query-id/status

这个命令使用查询ID查询查询的状态信息,"query-id"是需要替换为具体的查询ID。

4)获取查询结果

curl http://presto-server:8080/v1/query/query-id/results/1

这个命令使用查询ID获取查询结果,"1"表示结果是从第一条开始获取的。执行成功后,Presto服务器会以JSON格式返回查询结果。

5)取消查询请求

curl --request DELETE http://presto-server:8080/v1/query/query-id

这个命令会取消查询ID对应的查询请求,并且终止查询执行。

6)获取Presto 节点信息

curl http://presto-server:8080/v1/node

为检索集群中可用Trino节点的列表提供支持。

7)获取Presto服务器使用统计信息

curl http://presto-server:8080/v1/status

这个命令返回Presto服务器的使用统计信息,例如查询执行次数、查询响应时间、查询失败次数等。

8)获取查询计划

curl http://presto-server:8080/v1/query/query-id/plan

这个命令返回查询ID对应的查询计划,包括查询计划中使用的数据源、过滤器、连接方式等信息。

这里只是列举出部分的api,想了解更多,可参阅官方文档。

四、Presto(Trino)执行计划

Presto(Trino)执行计划的生成基于Presto(Trino)的分布式查询引擎。Presto(Trino)将一个查询分解成多个任务,并在多个节点上并行执行这些任务。执行计划记录每个任务的执行方式,以及每个任务中使用的算子和资源。

以下是Presto(Trino)执行计划的基本生成原理:

  1. 解析:Presto(Trino)将查询语句解析成一棵语法树。这个语法树包含了查询的各个组成部分,如选择器、联结条件、过滤条件等等。

  2. 逻辑优化:Presto(Trino)对语法树进行逻辑优化。例如,它可以通过重组联结条件来改善查询性能,或者消除不必要的过滤器。

  3. 物理优化:Presto(Trino)将逻辑计划转换为物理计划。这个过程中,Presto(Trino)选择合适的算子和连接方式,以在整个集群中共享计算负载。

  4. 任务划分:Presto(Trino)将物理计划分解成多个小任务,并在节点上并行执行这些任务。每个任务都包含一个或多个算子,并指定使用哪些资源和节点。

  5. **执行计划:**Presto(Trino)生成执行计划,描述所有任务的执行方式以及每个任务中使用的算子和资源。这个执行计划可以在查询期间进行动态更新,并且会根据查询的进度和节点负载进行调整。

presto查看执行计划,大数据,Presto,SQL,大数据,presto,sql
总之,Presto(Trino)执行计划的生成基于一系列逻辑和物理优化,以及任务分解和分布式执行等技术。通过使用执行计划,您可以更好地了解查询的执行方式和性能瓶颈,从而对查询进行优化。


Presto(Trino)REST API 与执行计划介绍就先到这里了,有任何疑问欢迎私信或留言,也可关注我【大数据与云原生技术分享】加群或私信咨询问题~文章来源地址https://www.toymoban.com/news/detail-723294.html

到了这里,关于【大数据】Presto(Trino)REST API 与执行计划介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Presto的介绍、使用和原理架构

    介绍 Presto是一款Facebook开源的MPP架构的OLAP查询引擎,可针对不同数据源执行大容量数据集的一款分布式SQL执行引擎,数据量支持GB到PB字节,主要用来处理秒级查询的场景。 Presto 本身并不存储数据, ,但是可以接入多种数据源,并且支持跨数据源的级联查询,而且基于内存

    2024年02月03日
    浏览(44)
  • 数据库:Hive转Presto(二)

    继续上节代码,补充了replace_func函数,        

    2024年02月07日
    浏览(37)
  • 用户认证-Kerberos的介绍和使用(Hadoop、Hive、数仓流程、Presto、Kylin集成配置)

    概述 Kerberos是一种计算机网络认证协议,用来在非安全网络中,对个人通信以安全的手段进行 身份认证 , 它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份 。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用

    2024年02月02日
    浏览(56)
  • presto插件机制揭秘:探索无限可能的数据处理舞台

    :Presto Plugin 本文源码环境: presto: prestoDb 0.275版本 在Presto框架中插件机制设计是一种非常常见和强大的扩展方式。它可以使软件系统更加灵活和可扩展,允许用户根据自己的需求和偏好自定义和扩展系统功能。在 Presto 这样的分布式 SQL 查询引擎中,插件机制发挥着重

    2024年02月05日
    浏览(73)
  • 07_Hudi案例实战、Flink CDC 实时数据采集、Presto、FineBI 报表可视化等

    7.第七章 Hudi案例实战 7.1 案例架构 7.2 业务数据 7.2.1 客户信息表 7.2.2 客户意向表 7.2.3 客户线索表 7.2.4 线索申诉表 7.2.5 客户访问咨询记录表 7.3 Flink CDC 实时数据采集 7.3.1 开启MySQL binlog 7.3.2 环境准备 7.3.3 实时采集数据 7.3.3.1 客户信息表 7.3.3.2 客户意向表 7.3.3.3 客户线索表 7

    2024年02月13日
    浏览(51)
  • presto连接mongodb

    1.包下载 2.创建配置目录 3.特定于每个节点的环境配置 4.Java虚拟机的命令行选项

    2024年02月16日
    浏览(38)
  • 1. Presto基础

    一、presto基础操作 二、时间函数 0、当前日期/当前时间 1、转时间戳 1)字符串转时间戳 (推荐) 即:‘2019-04-26’ 转换成 2019-04-26 00:00:00.000 2)按照format指定的格式,将字符串string解析成timestamp。 注:字符串格式和format格式需保持一致,以下为错误示例: 注:时间戳格式化

    2024年02月02日
    浏览(42)
  • 2. Presto应用

    1、Presto安装使用 参考官方文档:https://prestodb.io/docs/current/ Presto是一个高效的查询分析引擎,支持多种数据源,例如(Hive、MySQL、MD、Kafka等),内部查询是基于内存操作的,相比较Spark效率更高,而且更大的特点在于可以自定义内存空间,设置内存使用大小。 安装部署 测试

    2024年02月02日
    浏览(42)
  • Presto VS Spark

    5个节点,每个节点10G内存。 测试SQL,每个执行3次,求平均,对比计算性能。 Spark:2.3.1 Presto: 0.208 Spark: Presto: Spark计算比Presto快一倍,胜出。 平分秋色,Spark会好那么一丢丢。 Spark: 0.43s Presto: 0.5s Presto无论聚合计算,还是全表扫描查询,都略比Spark有优势,不过总的查询不

    2023年04月23日
    浏览(30)
  • Presto集群安装部署

    2020年12月27日,PrestoSQL为了更好的与Facebook的Presto进行区分而改名为Trino。PrestoSQL/Trino是一种分布式SQL查询引擎,旨在查询分布在一个或多个异构数据源上的大型数据集 PrestoSQL官网:https://trino.io PrestoSQL官方文档:https://trino.io/docs/current/overview.html 更多关于Presto的介绍详见文章

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包