Flink SQL客户端

1.概述

Flink 的 Table & SQL API 可以处理 SQL 语言编写的查询语句,但是这些查询需要嵌入用 Java 或 Scala 编写的表程序中。此外,这些程序在提交到集群前需要用构建工具打包。这或多或少限制了 Java/Scala 程序员对 Flink 的使用。

SQL 客户端 的目的是提供一种简单的方式来编写、调试和提交表程序到 Flink 集群上,而无需写一行 Java 或 Scala 代码。SQL 客户端命令行界面(CLI) 能够在命令行中检索和可视化分布式应用中实时产生的结果。
以下来源于Flink 1.12版本。其他版本暂时不做比较。

2.入门

启动Flink集群

./bin/start-cluster.sh

启动SQL客户端命令行界面

./bin/sql-client.sh embedded

执行SQL查询

SELECT 'Hello World';

该查询不需要 table source,并且只产生一行结果。CLI 将从集群中检索结果并将其可视化。按 Q 键退出结果视图。

CLI 为维护和可视化结果提供三种模式

表格模式(table mode)在内存中实体化结果,并将结果用规则的分页表格可视化展示出来。执行如下命令启用:

SET sql-client.execution.result-mode=table;

变更日志模式(changelog mode)不会实体化和可视化结果,而是由插入(+)和撤销(-)组成的持续查询产生结果流。

SET sql-client.execution.result-mode=changelog;

Tableau模式(tableau mode)更接近传统的数据库,会将执行的结果以制表的形式直接打在屏幕之上。具体显示的内容会取决于作业 执行模式的不同(execution.type):

SET sql-client.execution.result-mode=tableau;

你可以用如下查询来查看三种结果模式的运行情况:

SELECT name, COUNT(*) AS cnt FROM (VALUES ('Bob'), ('Alice'), ('Greg'), ('Bob')) AS NameTable(name) GROUP BY name;

此查询执行一个有限字数示例:

变更日志模式 下,看到的结果应该类似于:

+ Bob, 1
+ Alice, 1
+ Greg, 1
- Bob, 1
+ Bob, 2

表格模式 下,可视化结果表将不断更新,直到表程序以如下内容结束:

Bob, 2
Alice, 1
Greg, 1

Tableau模式 下,如果这个查询以流的方式执行,那么将显示以下内容:

+-----+----------------------+----------------------+
| +/- |                 name |                  cnt |
+-----+----------------------+----------------------+
|   + |                  Bob |                    1 |
|   + |                Alice |                    1 |
|   + |                 Greg |                    1 |
|   - |                  Bob |                    1 |
|   + |                  Bob |                    2 |
+-----+----------------------+----------------------+
Received a total of 5 rows

如果这个查询以批的方式执行,显示的内容如下:

+-------+-----+
|  name | cnt |
+-------+-----+
| Alice |   1 |
|   Bob |   2 |
|  Greg |   1 |
+-------+-----+
3 rows in set

这几种结果模式在 SQL 查询的原型设计过程中都非常有用。这些模式的结果都存储在 SQL 客户端 的 Java 堆内存中。为了保持 CLI 界面及时响应,变更日志模式仅显示最近的 1000 个更改。表格模式支持浏览更大的结果,这些结果仅受可用主内存和配置的最大行数(sql-client.execution.max-table-result.rows)的限制。

注意:

在批处理环境下执行的查询只能用表格模式或者Tableau模式进行检索。

3.配置

进入SQL 客户端后,输入help命令:

help;

其他配置,请参考配置

4.提交任务

如何具体使用SQL客户端提交一个任务,请参考配置

5.兼容

为了与以前兼容,SQL Client仍然支持用环境YAML文件初始化,并允许在YAML文件中设置key。当设置YAML文件中定义了key时,SQL Client将打印要通知的警告消息。

Flink SQL> SET execution.type = batch;
[WARNING] The specified key 'execution.type' is deprecated. Please use 'execution.runtime-mode' instead.
[INFO] Session property has been set.-- all the following DML statements will be restored from the specified savepoint path
Flink SQL> INSERT INTO ...

当使用SET命令打印属性时,SQL Client也将打印所有的属性。为了区分deprecated的key,sql客户端使用[deprecated] 作为标识符。

Flink SQL>SET;
execution.runtime-mode=batch
sql-client.execution.result-mode=table
table.planner=blink
[DEPRECATED] execution.planner=blink
[DEPRECATED] execution.result-mode=table
[DEPRECATED] execution.type=batch
ult-mode=table
table.planner=blink
[DEPRECATED] execution.planner=blink
[DEPRECATED] execution.result-mode=table
[DEPRECATED] execution.type=batch

Flink SQL客户端相关推荐

  1. flink sql 如何upsert 到一张hologres表中

    Flink Table 的三种 Sink 模式 作为计算引擎 Flink 应用的计算结果总要以某种方式输出,比如调试阶段的打印到控制台或者生产阶段的写到数据库.而对于本来就需要在 Flink 内存保存 ...

  2. flink sql udf jar包_flink教程flink 1.11 集成zeppelin实现简易实时计算平台

    背景 zeppelin不提供per job模式 实时平台开发周期长 基于zeppelin开发一个简易实时平台 开发zeppelin Interpreter 提交sql任务 提交jar任务 背景 随着f ...

  3. Flink SQL 在网易云音乐的产品化实践

    简介:云音乐的性能优化.运维完善实战经验分享. 摘要:本文由网易云音乐数据智能部资深数据平台开发工程师蒋文伟分享,主要介绍 Flink SQL 在云音乐的产品化实践.分享内容如下: 简介 产品功能 性 ...

  4. Flink SQL Client方言切换与datagen->Hive(DDL形式+streaming形式)

    概述 本文是对[1]的完整复现,补充了[1]中缺失的大量细节. 切换方言 切换目标 Flink SQL Client命令 切换为hive SET table.sql-dialect=hive; 切换为 ...

  5. Flink SQL Client进行Kafka事实表与Hbase维度表Join(纯DDL/SQL方式)

    概述: 對參考鏈接[1]進行DDL上的復現. 一些基本的業務常识   來源載體 數據特點 維表 Mysql/Csv/Hbase 很少變化 事實表 Kafka 不停變化 开发环境与准备工作 组件 版本 ...

  6. Flink SQL Client的datagen的用法(转载+自己验证)

    注意启动Flink集群 ① CREATE TABLE source_table ( id INT, score INT, address STRING, ts AS localtimestamp, W ...

  7. Flink SQL 1.11 on Zeppelin 平台化实践

    简介: 鉴于有很多企业都无法配备专门的团队来解决 Flink SQL 平台化的问题,那么到底有没有一个开源的.开箱即用的.功能相对完善的组件呢?答案就是本文的主角--Apache Zeppelin. ...

  8. Flink SQL CDC 上线!我们总结了 13 条生产实践经验

    #2020云栖大会#阿里云海量offer来啦!投简历.赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>> 摘要: 7月,Flink 1.11 新版发布,在生态及易用性上有大幅提升 ...

  9. Flink SQL CDC 13 条生产实践经验

    摘要:7月,Flink 1.11 新版发布,在生态及易用性上有大幅提升,其中 Table & SQL 开始支持 Change Data Capture(CDC).CDC 被广泛使用在复制数据. ...

最新文章

  1. 构建前瞻性应用架构的优秀实践
  2. 客户端脚本验证码总结一
  3. Kotlin特色之object、let、with、run、apply、also函数的使用
  4. 加载dict_Python的dict实现原理和Java的HashMap之间的区别
  5. 【数据湖加速篇】 —— 如何利用缓存加速服务来提升数据湖上机器学习训练速度
  6. c语言int超出范围字符串,Go返回int64类型字段超出javascript Number范围的解决方法...
  7. nginx -- 安装配置Nginx
  8. UVA 11733 Airports
  9. redis key命名规范_redis简介
  10. 剑指Offer_12_矩阵中的路径(参考问题:马踏棋盘)
  11. protoc 命令 java_用proto命令生成java文件
  12. 提高语音识别率:必须加入深度学习吗?
  13. hdu 6377 度度熊看球赛 (dp)
  14. java连接ftp服务器
  15. 商业数据分析--思路总结
  16. 通过网页端保存ins图片的方法(谷歌浏览器)
  17. python和c++情侣网名_python与C或者C++的混合编程
  18. 谈谈数据结构的重要性
  19. ftp服务器可以创建文件夹吗,ftp服务器如何创建文件夹
  20. php 提取视频中的声音,怎么提取视频的声音 提取视频中的声音

热门文章

  1. 分享给大家几段有趣的代码,学会python画画可以不用自己动手啦
  2. C#中的PerformanceCounter类
  3. MySQL数据库设计范式
  4. comment.html手机文件,comment HTML元素
  5. 功能测试(八)—— APP之专项测试、性能测试、性能测试工具SoloPi
  6. 百元和千元的蓝牙耳机区别大吗?哪款蓝牙耳机性价比高
  7. 从零开始系列(四):一文看懂arm架构和x86架构有什么区别
  8. AMD锐龙CPU虚拟机安装macOS与常用软件教程
  9. Random Sample Consensus: A Paradigm for Model Fitting
  10. ipad怎么创建html文件夹,ipad怎么建立文件夹 ipad如何在桌面建立及删除文件夹