Flink系列之:Flink SQL Gateway
Flink系列之:Flink SQL Gateway
- 一、Flink SQL Gateway
- 二、部署
- 三、启动SQL Gateway
- 四、运行 SQL 查询
- 五、SQL 网关启动选项
- 六、SQL网关配置
- 七、支持的端点
一、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 --helpUsage: sql-gateway.sh [start|start-foreground|stop|stop-all] [args]commands:start - Run a SQL Gateway as a daemonstart-foreground - Run a SQL Gateway as a console applicationstop - Stop the SQL Gateway daemonstop-all - Stop all the SQL Gateway daemons-h | --help - Show this help message
对于“start”或“start-foreground”命令,您可以在 CLI 中配置 SQL 网关。
$ ./bin/sql-gateway.sh start --helpStart 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 alloptions.
六、SQL网关配置
您可以在下面启动 SQL Gateway 时配置 SQL Gateway,或者任何有效的 Flink 配置条目:
$ ./sql-gateway -Dkey=value
key | Default | Type | Description |
---|---|---|---|
sql-gateway.session.check-interval | 1 min | Duration | 空闲会话超时的检查间隔,可以通过设置为零来禁用。 |
sql-gateway.session.idle-timeout | 10 min | Duration | 当会话在该时间间隔内没有被访问时关闭会话的超时时间。如果设置为零,会话将不会关闭。 |
sql-gateway.session.max-num | 1000000 | Integer | SQL Gateway 服务的最大活动会话数。 |
sql-gateway.session.plan-cache.enabled | false | Boolean | 如果为 true,sql gateway 将缓存并重用每个会话的查询计划。 |
sql-gateway.session.plan-cache.size | 100 | Integer | 计划缓存大小,当table.optimizer.plan-cache.enabled 为true时生效。 |
sql-gateway.session.plan-cache.ttl | 1 hour | Duration | plan缓存的TTL,它控制缓存写入后多久过期,当table.optimizer.plan-cache.enabled 为true时生效。 |
sql-gateway.worker.keepalive-time | 5 min | Duration | 空闲工作线程的保持活动时间。当工作线程数超过最小工作线程数时,在此时间间隔后多余的线程将被杀死。 |
sql-gateway.worker.threads.max | 500 | Integer | sql gateway 服务的最大工作线程数。 |
sql-gateway.worker.threads.min | 5 | Integer | sql 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 命令具有更高的优先级。
相关文章:
Flink系列之:Flink SQL Gateway
Flink系列之:Flink SQL Gateway 一、Flink SQL Gateway二、部署三、启动SQL Gateway四、运行 SQL 查询五、SQL 网关启动选项六、SQL网关配置七、支持的端点 一、Flink SQL Gateway SQL 网关是一项允许多个客户端从远程并发执行 SQL 的服务。它提供了一种简单的方法…...
Linux基础篇:解析Linux命令执行的基本原理
Linux 命令是一组可在 Linux 操作系统中使用的指令,用于执行特定的任务,例如管理文件和目录、安装和配置软件、网络管理等。这些命令通常在终端或控制台中输入,并以文本形式显示输出结果。 Linux 命令通常以一个或多个单词的简短缩写或单词…...
LeetCode-热题100:153. 寻找旋转排序数组中的最小值
题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次…...
游戏客户客户端面经
C#和C的类的区别C# List添加100个Obj和100 int内存是怎么变化的重载和重写的区别,重载是怎么实现的重写是怎么实现的?虚函数表是类的还是对象的用过哪些C的STLVector底层是怎么实现的Vector添加一百次数据内存是怎么变化Map的底层,红黑树的查…...
网站业务对接DDoS高防
准备需要接入的网站域名清单,包含网站的源站服务器IP(仅支持公网IP的防护)、端口信息等。所接入的网站域名必须已完成ICP备案。如果您的网站支持HTTPS协议访问,您需要准备相应的证书和私钥信息,一般包含格式为.crt的公…...
Python-VBA编程500例-024(入门级)
字符串写入的行数(Line Count For String Writing)在实际应用中有着广泛的应用场景。常见的应用场景有: 1、文本编辑及处理:在编写或编辑文本文件时,如使用文本编辑器或文本处理器,经常需要处理字符串并确定其在文件中的行数。这…...
蓝桥杯 - 小明的背包1(01背包)
解题思路: 本题属于01背包问题,使用动态规划 dp[ j ]表示容量为 j 的背包的最大价值 注意: 需要时刻提醒自己dp[ j ]代表的含义,不然容易晕头转向 注意越界问题,且 j 需要倒序遍历 如果正序遍历 dp[1] dp[1 - vo…...
学习java第二十六天
Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的…...
Go第三方框架--gin框架(二)
4. gin框架源码–Engine引擎和压缩前缀树的建立 讲了这么多 到标题4才开始介绍源码,主要原因还是想先在头脑中构建起 一个大体的框架 然后再填肉 这样不容易得脑血栓。标题四主要涉及标题2.3的步骤一 也就是 标题2.3中的 粗线框中的内容 4.1 Engine 引擎的建立 见…...
五分钟搞懂UDS刷写34/36/37服务(内含S19文件解读)
目录 34服务 36服务 37服务 S19文件介绍 理论太多总是让人头昏,通过举例的方法学习刷写是最好的办法,刷写中最重要的就是34/36/37服务之间的联动,在我当前的项目中37服务较为简单,等待36服务全部传输完成之后,发送…...
知识图谱智能问答系统技术实现
知识图谱是以一种结构化的方式存储和描述知识的数据集合,它将知识表示为节点和边的形式,并可以对这些节点和边进行有意义的存储、查询、连接和关系挖掘等操作。知识图谱不仅可以为人提供理解信息的能力,而且还能为机器提供对信息进行分析、推…...
【unity】如何汉化unity编译器
在【unity】如何汉化unity Hub这篇文章中,我们已经完成了unity Hub的汉化,现在让我们对unity Hub安装的编译器也进行下汉化处理。 第一步:在unity Hub软件左侧栏目中点击安装,选择需要汉化的编译器,再点击设置图片按钮…...
为什么Python不适合写游戏?
知乎上有热门个问题:Python 能写游戏吗?有没有什么开源项目? Python可以开发游戏,但不是好的选择 Python作为脚本语言,一般很少用来开发游戏,但也有不少大型游戏有Python的身影,比如࿱…...
查询优化-提升子查询-UNION类型
瀚高数据库 目录 文档用途 详细信息 文档用途 剖析UNION类型子查询提升的条件和过程 详细信息 注:图片较大,可在浏览器新标签页打开。 SQL: SELECT * FROM score sc, LATERAL(SELECT * FROM student WHERE sno 1 UNION ALL SELECT * FROM student…...
【数据结构 | 图论】如何用链式前向星存图(保姆级教程,详细图解+完整代码)
一、概述 链式前向星是一种用于存储图的数据结构,特别适合于存储稀疏图,它可以有效地存储图的边和节点信息,以及边的权重。 它的主要思想是将每个节点的所有出边存储在一起,通过数组的方式连接(类似静态数组实现链表…...
气象预测新篇章:Python人工智能的变革力量
Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…...
基于微信小程序的民宿短租系统设计与实现(论文+源码)_kaic
摘 要 随着社会的发展,出差、旅游成为常态,也就造成民宿短租市场的兴起。人们新到陌生的环境里找民宿一般都是通过中介。中介虽然可以快速找到合适的民宿但会收取大量的中介费用,这对刚到新环境里的人们来说是一笔大的资金支出。也有一些人通…...
vue3开发前端表单缓存自定义指令,移动端h5必备插件
开发背景 公司需要开发一款移动端应用,使用vue开发,用户录入表单需要本地缓存,刷新页面,或者不小心关掉重新进来,上次录入的信息还要存在。 这里有两种方案,第一种就是像博客平台一样,实时保存…...
骗子查询系统源码
源码简介 小权云黑管理系统 V1.0 功能如下: 1.添加骗子,查询骗子 2.可添加团队后台方便审核用 3.在线反馈留言系统 4.前台提交骗子,后台需要审核才能过 5.后台使用光年UI界面 6.新增导航列表,可给网站添加导航友链 7.可添加云黑类…...
目标检测+车道线识别+追踪
一种方法: 车道线检测-canny边缘检测-霍夫变换 一、什么是霍夫变换 霍夫变换(Hough Transform)是一种在图像处理和计算机视觉中广泛使用的特征检测技术,主要用于识别图像中的几何形状,尤其是直线、圆和椭圆等常见形状…...
非wpf应用程序项目【类库、用户控件库】中使用HandyControl
文章速览 前言参考文章实现方法1、添加HandyControl包;2、添加资源字典3、修改资源字典内容 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ 前言 wpf应用程序中,在入口项目中…...
【python】flask执行上下文context,请求上下文和应用上下文原理解析
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
DDos系列攻击原理与防御原理
七层防御体系 静态过滤 命中黑名单 对确定是攻击的流量直接加入黑名单(源地址命中黑名单直接丢弃,缺乏机动性和扩展性) 畸形报文过滤 畸形报文攻击 TCP包含多个标记位,排列组合有规律 • 现象:TCP标记位全为1 …...
Python拆分PDF、Python合并PDF
WPS能拆分合并,但却是要输入编辑密码,我没有。故写了个脚本来做拆分,顺便附上合并的代码。 代码如下(extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…...
SqlServer(4)经典总结大全-技巧总结-数据开发-基本函数-常识整理-经典面试题
六、技巧 1、11,12的使用,在SQL语句组合时用的较多 “where 11” 是表示选择全部 “where 12”全部不选, 如: if strWhere !‘’ begin set strSQL ‘select count(*) as Total from [’ tblName ] where ’ strWhere …...
ArcGIS矢量裁剪矢量
一、利用相交工具 Arctoolbox工具一分析工具一叠加分析一相交...
pygame用chatgpt绘制3d沿x轴旋转的
import pygame from pygame.locals import * import sys import mathpygame.init()width, height 800, 600 screen pygame.display.set_mode((width, height))vertices [(0, 100, 0), (100, 200, 0), (300, 100, 0)]angle 0 rotation_speed 2 # 可根据需要调整旋转速度 c…...
golang大小写规则的影响
目录 golang大小写的规则: 1、可见性(visibility): 2、包的导入和调用: 3、json序列化和反序列化: 4、结构体字段的导出和可见性: 5、方法和函数的导出和可见性 : 6、常量和变…...
基于Java在线考试系统系统设计与实现(源码+部署文档)
博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…...
如何应对复杂软件工程的开发流程?
应对复杂软件工程的开发流程通常需要一个结构化和系统化的方法。这种方法不仅包括采用合适的技术和工具,还涉及到项目管理、团队协作、需求分析、设计、实施、测试、部署和维护等多个方面。以下是一些关键步骤,以及如何将这些步骤应用于使用LabVIEW进行软…...
做b2c网站多少钱/无人区在线观看高清1080
转载于:https://www.cnblogs.com/iamCarson/p/6102719.html...
wordpress 获取用户密码/推广衣服的软文
直接赋值 可能创建一个或者不创建对象,如果”aaa”这个字符串在java String池里不存在,会在java String池里创建一个创建一个String对象(“aaa”)。 然后str1指向这个内存地址,无论以后用这种方式创建多少个值为”aaa”的字符串对象&#x…...
花都网站建设公司/网站seo入门基础教程书籍
service Kubernete Service 是一个定义了一组Pod的策略的抽象,我们也有时候叫做宏观服务。这些被服务标记的Pod都是(一般)通过label Selector决定的对于Kubernete原生的应用,Kubernete提供了一个简单的Endpoints API,这…...
关于配色的网站推荐/百度业务员联系电话
mysql插入数据后获得主键 针对自增主键的表,在插入时不需要主键,而是在插入过程自动获取一个自增的主键,比如MySQL, <insert id"add" parameterType"vo.Category" useGeneratedKeys"true" key…...
南阳+网站建设/八百客crm登录入口
忽略标点空格大小写,判断字母是否回文: 如: A man, a plan, a can al: Panama,return true; python: class Solution:def isPalindrome(self, s):if not s:return Truel, r 0, len(s) - 1 #找到最左、右位置while l < …...