0


Flink系列之:Flink SQL Gateway

Flink系列之:Flink SQL Gateway

一、Flink SQL Gateway

SQL 网关是一项允许多个客户端从远程并发执行 SQL 的服务。它提供了一种简单的方法来提交 Flink 作业、查找元数据并在线分析数据。

SQL 网关由可插入端点和 SqlGatewayService 组成。 SqlGatewayService 是一个由端点重用来处理请求的处理器。端点是允许用户连接的入口点。根据端点的类型,用户可以使用不同的实用程序进行连接。

在这里插入图片描述

二、部署

本节介绍如何从命令行设置和运行您的第一个 Flink SQL 程序。

SQL Gateway 捆绑在常规 Flink 发行版中,因此可以开箱即用。它只需要一个正在运行的Flink集群,可以在其中执行表程序。如果您只是想尝试 SQL 客户端,您还可以使用以下命令启动一个由一名工作人员组成的本地集群:

$ ./bin/start-cluster.sh

三、启动SQL Gateway

SQL Gateway 脚本也位于 Flink 的二进制目录中。用户可以通过调用以下方式开始:

$ ./bin/sql-gateway.sh start-Dsql-gateway.endpoint.rest.address=localhost

该命令启动带有 REST 端点的 SQL 网关,该端点侦听地址 localhost:8083。您可以使用curl命令检查REST端点是否可用。

$ curl http://localhost:8083/v1/info
{"productName":"Apache Flink","version":"1.20-SNAPSHOT"}

四、运行 SQL 查询

要验证您的设置和集群连接,您可以执行以下步骤。

第 1 步:打开会话

$ curl--request POST http://localhost:8083/v1/sessions
{"sessionHandle":"..."}

SQL Gateway 使用返回结果中的 sessionHandle 来唯一标识每个活动用户。

第 2 步:执行查询

$ curl--request POST http://localhost:8083/v1/sessions/${sessionHandle}/statements/ --data'{"statement": "SELECT 1"}'{"operationHandle":"..."}

返回结果中的operationHandle用于SQL Gateway唯一标识提交的SQL。

第 3 步:获取结果

有了上面的sessionHandle和operationHandle,就可以取到相应的结果了。

$ curl--request GET http://localhost:8083/v1/sessions/${sessionHandle}/operations/${operationHandle}/result/0
{"results":{"columns":[{"name":"EXPR$0",
        "logicalType":{"type":"INTEGER",
          "nullable":false}}],
    "data":[{"kind":"INSERT",
        "fields":[1]}]},
  "resultType":"PAYLOAD",
  "nextResultUri":"..."}

结果中的nextResultUri如果不为null,则用于获取下一批结果。

$ curl--request GET ${nextResultUri}

五、SQL 网关启动选项

$ ./bin/sql-gateway.sh --help

Usage: sql-gateway.sh [start|start-foreground|stop|stop-all][args]
  commands:
    start               - Run a SQL Gateway as a daemon
    start-foreground    - Run a SQL Gateway as a console application
    stop                - Stop the SQL Gateway daemon
    stop-all            - Stop all the SQL Gateway daemons
    -h|--help         - Show this help message

对于“start”或“start-foreground”命令,您可以在 CLI 中配置 SQL 网关。

$ ./bin/sql-gateway.sh start --help

Start the Flink SQL Gateway as a daemon to submit Flink SQL.

  Syntax: start [OPTIONS]-D<property=value>   Use value for given property
     -h,--help             Show the help message with descriptions of all
                           options.

六、SQL网关配置

您可以在下面启动 SQL Gateway 时配置 SQL Gateway,或者任何有效的 Flink 配置条目:

$ ./sql-gateway -Dkey=value

keyDefaultTypeDescriptionsql-gateway.session.check-interval1 minDuration空闲会话超时的检查间隔,可以通过设置为零来禁用。sql-gateway.session.idle-timeout10 minDuration当会话在该时间间隔内没有被访问时关闭会话的超时时间。如果设置为零,会话将不会关闭。sql-gateway.session.max-num1000000IntegerSQL Gateway 服务的最大活动会话数。sql-gateway.session.plan-cache.enabledfalseBoolean如果为 true,sql gateway 将缓存并重用每个会话的查询计划。sql-gateway.session.plan-cache.size100Integer计划缓存大小,当

table.optimizer.plan-cache.enabled

为true时生效。sql-gateway.session.plan-cache.ttl1 hourDurationplan缓存的TTL,它控制缓存写入后多久过期,当

table.optimizer.plan-cache.enabled

为true时生效。sql-gateway.worker.keepalive-time5 minDuration空闲工作线程的保持活动时间。当工作线程数超过最小工作线程数时,在此时间间隔后多余的线程将被杀死。sql-gateway.worker.threads.max500Integersql gateway 服务的最大工作线程数。sql-gateway.worker.threads.min5Integersql gateway 服务的最小工作线程数。

七、支持的端点

Flink 原生支持 REST Endpoint 和 HiveServer2 Endpoint。默认情况下,SQL 网关与 REST 端点捆绑在一起。凭借灵活的架构,用户可以通过调用来启动具有指定端点的SQL Gateway

$ ./bin/sql-gateway.sh start -Dsql-gateway.endpoint.type=hiveserver2

或者在Flink配置文件中添加以下配置:

sql-gateway.endpoint.type: hiveserver2

注意:如果 Flink 配置文件中还包含 sql-gateway.endpoint.type 选项,则 CLI 命令具有更高的优先级。


本文转载自: https://blog.csdn.net/zhengzaifeidelushang/article/details/137019490
版权归原作者 最笨的羊羊 所有, 如有侵权,请联系我们删除。

“Flink系列之:Flink SQL Gateway”的评论:

还没有评论