南昌网站建设公司网站建设目标

武汉古倪环保科有限公司 2026/09/09 18:41:17

1. REST Endpoint 的核心交互模型

SQL Gateway 的 REST 交互基本就三步:

  1. Open Session
    客户端创建会话,Gateway 返回SessionHandle,后续所有操作都挂在这个会话上下文下(比如你在会话里USE CATALOGADD JARSET的东西)。 (Apache Nightlies)

  2. Submit SQL -> Operation
    提交 SQL 后,Gateway 把这条 SQL 变成一个Operation,返回OperationHandle。Operation 有生命周期:你可以cancel取消执行,也可以close释放资源。 (Apache Nightlies)

  3. Fetch Results(分页批次)
    OperationHandle拉取结果。每次会返回一批数据 + schema,可能还会带nextResultUri用于拉下一批;当拉完会返回resultType=EOS且下一批 URI 为空。 (Apache Nightlies)

这套模型的好处是:你可以像管理“远程查询任务”一样管理 SQL(查状态、取消、释放、分页拉取),非常适合平台化封装。

2. REST Endpoint 关键配置:address / bind-address / port / bind-port

REST Endpoint 的网络配置最容易搞混的是“对外地址”和“绑定地址”的区别:

  • sql-gateway.endpoint.rest.address客户端用来连接 Gateway 的地址(对外地址)
  • sql-gateway.endpoint.rest.bind-addressGateway 进程实际绑定的本地地址
  • sql-gateway.endpoint.rest.port:客户端连接的端口(默认 8083)
  • sql-gateway.endpoint.rest.bind-port:Gateway 绑定端口(默认 “8083”,可配置成端口列表、范围,或组合) (Apache Nightlies)

为什么建议 bind-port 配范围

当同一台机器上跑多个 SQL Gateway(多实例、灰度、不同租户)时,固定端口很容易冲突。bind-port支持:

  • 列表:"50100,50101"
  • 范围:"50100-50200"
  • 组合:"50100,50110-50120"

官方也明确建议用范围避免冲突。 (Apache Nightlies)

port 和 bind-port 的关系(快速记忆)

优先级逻辑可以理解为:

  • 你配了bind-port:就按bind-port绑定
  • 否则:绑定port(或默认值)
  • bind-address配了就强制绑定到它,否则按 address/默认行为处理 (Apache Nightlies)

3. OpenAPI 版本:v1 到 v4 各自解决什么

REST Endpoint 提供多版本 OpenAPI(默认 v3),不同版本能力不同:

  • v1:允许提交 statements 并执行
  • v2:支持 SQL Client 连接 Gateway
  • v3:支持 Materialized Table 的 refresh 操作
  • v4:支持 Application Mode 部署脚本(deploy script) (Apache Nightlies)

做平台封装时建议:先 GET/api_versions探测可用版本,再选择你需要的协议版本。

4. v4 常用 API 清单与“该用哪个”

下面按“你在平台里最常用的事情”来分组(都属于你贴出来的 v4):

4.1 探活与版本协商

  • GET /api_versions:返回可用 API 版本
  • GET /info:返回 Gateway/集群元信息

4.2 会话管理(Session)

  • POST /sessions:创建会话(可带 properties 覆盖默认配置)
  • GET /sessions/:session_handle:查看会话配置
  • DELETE /sessions/:session_handle:关闭会话
  • POST /sessions/:session_handle/heartbeat:心跳续期,配合 idle-timeout 保活

4.3 会话内环境配置(DDL / USE / ADD JAR)

  • POST /sessions/:session_handle/configure-session:执行DDL、USE、LOAD/UNLOAD MODULE、ADD JAR等“搭环境”的语句
    典型用途:建表、切 catalog/database、注册函数、加载 connector 依赖。

4.4 执行 SQL(生成 Operation)

  • POST /sessions/:session_handle/statements:执行一条 statement,返回operation_handle

4.5 Operation 生命周期管理

  • GET /sessions/:session_handle/operations/:operation_handle/status:查状态
  • POST /.../cancel:取消执行
  • DELETE /.../close:关闭 operation 释放资源
  • GET /.../result/:token:分页拉取结果(注意 token 和 rowFormat)

4.6 体验增强与脚本部署

  • GET /sessions/:session_handle/complete-statement:SQL 自动补全提示(做 Web SQL IDE 很有用)
  • POST /sessions/:session_handle/scripts:Application Mode 部署脚本(v4 的核心能力之一)

这些接口的语义在官方 REST Endpoint 文档里都有完整描述。 (Apache Nightlies)

5. 拉取结果时 rowFormat 怎么选:JSON vs PLAIN_TEXT

GET .../result/:token有个必填查询参数rowFormat,它决定 RowData 怎么序列化:

  • JSON:按 Table/RowData 的 JSON 映射返回(能保留类型信息、字段结构)
  • PLAIN_TEXT:自动把所有列 cast 成 String(适合快速展示、日志、调试) (Apache Nightlies)

平台化建议:

  • 面向程序消费:优先 JSON
  • 面向人看的控制台:PLAIN_TEXT 体验更好(少处理类型)

6. 一套可直接照抄的 REST 调用流程(含配置会话、执行、分页、收尾)

下面示例用最小闭环演示“创建会话 → 配置环境 → 执行 SQL → 拉结果 → 关闭资源”。

6.1 创建 Session

SESSION=$(curl-s-XPOST http://localhost:8083/v1/sessions|jq-r.sessionHandle)echo$SESSION

6.2 配置会话(可选:USE / ADD JAR / CREATE TABLE 等)

例如创建临时表(黑洞 sink):

curl-s-XPOST"http://localhost:8083/v1/sessions/${SESSION}/configure-session"-H'Content-Type: application/json'-d'{"statement":"CREATE TEMPORARY TABLE sink(a INT) WITH (''connector''=''blackhole'')"}'

6.3 执行 statement,拿到 OperationHandle

OP=$(curl-s-XPOST"http://localhost:8083/v1/sessions/${SESSION}/statements"-H'Content-Type: application/json'-d'{"statement":"SELECT 1"}'|jq-r.operationHandle)echo$OP

6.4 拉取结果(注意 rowFormat + token)

curl-s"http://localhost:8083/v1/sessions/${SESSION}/operations/${OP}/result/0?rowFormat=JSON"

如果返回里有nextResultUri,继续 GET 它;直到resultType=EOS

6.5 收尾(强烈建议做)

curl-s-XDELETE"http://localhost:8083/v1/sessions/${SESSION}/operations/${OP}/close"curl-s-XDELETE"http://localhost:8083/v1/sessions/${SESSION}"

原因很简单:Operation/Session 都会占用服务端资源,不 close 就只能靠超时回收,平台一上量很容易把 gateway 拖慢。

7. 生产封装建议:把 Gateway 当“服务”来治理

  • 必须实现 heartbeat:前端 IDE/Web 平台很容易出现“用户停在页面上不动”,没有心跳会被 idle-timeout 回收;有心跳就能按需保活。 (Apache Nightlies)
  • 必须做 cancel + close:取消只是停止执行,close 才是资源释放;两者都要有入口(比如“停止查询”“关闭结果集”)。 (Apache Nightlies)
  • 结果拉取要支持分页续拉:以nextResultUri或 token 驱动续拉,避免一次性拉爆网关或客户端内存。 (Apache Nightlies)
  • 多实例端口用 bind-port 范围:尤其同机多 gateway、容器 hostNetwork、或灰度并行部署时最关键。 (Apache Nightlies)
  • rowFormat 策略固定:平台层统一约定 JSON/PLAIN_TEXT 的使用场景,避免不同客户端返回结构不一致。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

网站外链建设商业网站建设

还在为城通网盘的龟速下载而烦恼吗?想要彻底告别限速时代,享受真正的智能下载加速体验吗?今天我将为你分享一套完整的城通网盘提速方案,通过直连技术让

2026/06/30 13:38:36

长沙网站建设机械网站建设

你是否厌倦了那些“网红”攻略?打开App,推荐的永远是那几个热门景点、打卡餐厅,仿佛全世界的旅行者都只有一种偏好。当“说走就走”的冲动遇上“去哪都行”的迷茫&

2026/06/30 12:41:32

建设局网站烟台网站建设

Linly-Talker 与企业级身份认证:SSO 集成的可行路径在金融、医疗和大型企业的数字化转型浪潮中,AI 数字人正从“炫技演示”走向真正的业务嵌入。比如某银行用虚拟

2026/06/30 11:10:24

网站建设方案书岳阳网站建设

OpenPLC虚拟控制器:5步掌握工业自动化编程新利器【免费下载链接】OpenPLCSoftware for the OpenPLC - an open source industria

2026/06/30 12:36:02

网站建设规划吉安网站建设

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(

2026/06/30 13:31:06

黄浦网站建设成都建设网站

飞牛云NAS的需求是不少人的刚需和爱好,也是如今不少老哥们正在折腾的玩意儿。奈何厂商和二手贩子们的吹嘘下和哄抬下,即使双盘位老古董机器也是无一不涨,价位水涨船

2026/06/30 13:33:36

网站建设与管理网站建设空间

TensorFlow镜像与PyTorch对比:谁更适合长期项目维护?在企业级AI系统逐渐从“能跑通”迈向“稳运行”的今天,一个常被忽视却至关重要的问题浮出水面

2026/06/30 12:01:59

商务网站建设西宁网站建设

autofit.js大屏自适应终极方案:一键配置实现完美布局【免费下载链接】autofit.jsautofit.js 迄今为止最易用的自适应工具项目地址: https://gitcode

2026/06/30 13:08:34

北京网站建设福州网站建设

谷歌镜像站点对访问CosyVoice3资源有帮助吗?实际用途解析在当前国内开发者频繁接触海外开源AI项目的背景下,一个现实问题反复浮现:如何稳定、高效地获取托

2026/06/30 11:48:57