• Flink实战(七十四):FLINK-SQL使用基础(二)简介(二)入门


    1 SQL 客户端

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

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

    2  入门

    本节介绍如何在命令行里启动(setup)和运行你的第一个 Flink SQL 程序。

    SQL 客户端捆绑在常规 Flink 发行版中,因此可以直接运行。它仅需要一个正在运行的 Flink 集群就可以在其中执行表程序。有关设置 Flink 群集的更多信息,请参见集群和部署部分。如果仅想试用 SQL 客户端,也可以使用以下命令启动本地集群:

    ./bin/start-cluster.sh

    2.1 启动 SQL 客户端命令行界面

    SQL Client 脚本也位于 Flink 的 bin 目录中。将来,用户可以通过启动嵌入式 standalone 进程或通过连接到远程 SQL 客户端网关来启动 SQL 客户端命令行界面。目前仅支持 embedded 模式。可以通过以下方式启动 CLI:

    ./bin/sql-client.sh embedded

    默认情况下,SQL 客户端将从 ./conf/sql-client-defaults.yaml 中读取配置。有关环境配置文件结构的更多信息,请参见配置部分

    2.2 执行 SQL 查询

    命令行界面启动后,你可以使用 HELP 命令列出所有可用的 SQL 语句。输入第一条 SQL 查询语句并按 Enter 键执行,可以验证你的设置及集群连接是否正确:

    SELECT 'Hello World';

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

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

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

    SET execution.result-mode=table;

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

    SET execution.result-mode=changelog;

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

    SET execution.result-mode=tableau;

    注意当你使用这个模式运行一个流式查询的时候,Flink 会将结果持续的打印在当前的屏幕之上。如果这个流式查询的输入是有限的数据集, 那么Flink在处理完所有的数据之后,会自动的停止作业,同时屏幕上的打印也会相应的停止。如果你想提前结束这个查询,那么可以直接使用 CTRL-C 按键,这个会停掉作业同时停止屏幕上的打印。

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

    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 个更改。表格模式支持浏览更大的结果,这些结果仅受可用主内存和配置的最大行数max-table-result-rows)的限制。

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

    定义查询语句后,可以将其作为长时间运行的独立 Flink 作业提交给集群。为此,其目标系统需要使用 INSERT INTO 语句指定存储结果。配置部分解释如何声明读取数据的 table source,写入数据的 sink 以及配置其他表程序属性的方法。

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/13934192.html

  • 相关阅读:
    C#操作数据库,将其查查出来的记录条数显示在winform窗体中的方法之一
    关于SQL配置管理器的服务无法启动的解决办法!
    测试随笔
    .net版ckeditor配置水印功能(转)
    vs2010安装路径解决不能修改的方法
    c#wiform中KeyDown事件
    C#winform程序自定义鼠标样式
    一条sql语句循环插入N条不同记录(转)
    winform降低功耗总结
    ILMerge合并程序
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13934192.html
Copyright © 2020-2023  润新知