本文翻译自官网:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/

Flink Table Api & SQL 翻译目录

一直没有用 flink 的 table 或 sql api,最近开始要使用这部分功能了,先把官网对应的文档翻译一遍,方便自己慢慢查看

-----------------------------------------------

Apache Flink 具有两个关联 API-Table API 和 SQL - 用于统一流和批处理。Table API 是用 于 Scala 和Java 的语言集成查询 API,它允许以非常直观的方式组合来自关系运算符(例如选择,过滤和联接)的查询。Flink 的 SQL 基于实现 SQL 标准的 Apache Calcite。无论输入是批处理输入(DataSet)还是流输入(DataStream),在两个接口中指定的查询都具有相同的语义并指定相同的结果。

Table API 和 SQL 接口与 Flink 的 DataStream 和 DataSet API 紧密集成在一起。您可以轻松地在所有 API 和基于 API 的库之间切换。例如,您可以使用 CEP 库从 DataStream 中提取模式,然后再使用 Table API 分析模式,或者您可以在预处理程序上运行 Gelly 图算法之前,使用 SQL 查询、扫描、过滤和聚合批处理表数据。

请注意,Table API和SQL尚未完成功能,正在积极开发中。[Table API,SQL]和[stream,batch]输入的每种组合都不支持所有操作。

依赖结构

从 Flink 1.9 开始,Flink 提供了两种不同的计划程序实现来评估 Table&SQL API 程序:Blink planner 和Flink 1.9之前可用的 old planner。planner 负责将关系运算符转换为可执行的、优化的 Flink 作业。两种 planner 带有不同的优化规则和运行时类。它们在支持的功能方面也可能有所不同。

注意对于生产用例,建议使用Flink 1.9之前的 old planner。

所有 Table API 和 SQL 组件都捆绑在 flink-table 或 flink-table-blink Maven 组件中。

以下依赖关系与大多数项目有关:

  • flink-table-common:用于通过自定义功能,格式等扩展表生态系统的通用模块。
  • flink-table-api-java:适用于使用 Java 编程语言的纯表程序的 Table&SQL API(处于开发初期,不建议使用!)。
  • flink-table-api-scala:使用 Scala 编程语言的纯表程序的 Table&SQL API(处于开发初期,不建议使用!)。
  • flink-table-api-java-bridge:使用 Java 编程语言支持带有 DataStream / DataSet API 的 Table&SQL API。
  • flink-table-api-scala-bridge:使用 Scala 编程语言支持带有 DataStream / DataSet API 的 Table&SQL API。
  • flink-table-planner:表程序 planner 和运行时。这是1.9版本之前Flink的唯一 planner 。现在仍然是推荐的。
  • flink-table-planner-blink:新的 Blink planner 。
  • flink-table-runtime-blink:新的 Blink runtime。
  • flink-table-uber:将上述 API 模块以及 old planner 打包到大多数 Table&SQL API 用例的分发中。默认情况下,超级 JAR 文件 flink-table-*.jar 位于 Flink版本的目录 /lib  中。
  • flink-table-uber-blink:将上述API模块以及特定于Blink的模块打包到大多数Table&SQL API用例的分发中。默认情况下,uber  JAR 文件 flink-table-blink-*.jar位于/libFlink版本的目录中。

有关如何在表程序中的新旧 planner 之间进行切换的更多信息,请参见通用API页面。

表程序依赖性

根据目标编程语言,您需要将Java或Scala API添加到项目中,以便使用Table API和SQL定义管道:

<!-- Either... -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-api-java-bridge_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>
<!-- or... -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-api-scala-bridge_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>

此外,如果要在IDE中本地运行Table API和SQL程序,则必须添加以下一组模块之一,具体取决于要使用的 planner :

<!-- Either... (for the old planner that was available before Flink 1.9) -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>
<!-- or.. (for the new Blink planner) -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>

在内部,表生态系统的一部分在Scala中实现。因此,请确保为批处理和流应用程序都添加以下依赖项:

<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-scala_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>

扩展依赖

如果要实现与Kafka或一组用户定义的函数进行交互的自定义格式,则以下依赖关系就足够了,并且可以用于SQL Client的JAR文件:

<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-common</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>

当前,该模块包括以下扩展点:

  • SerializationSchemaFactory
  • DeserializationSchemaFactory
  • ScalarFunction
  • TableFunction
  • AggregateFunction

接下来要去哪里?

  • 概念和通用API:表API和SQL的共享概念和API。
  • 数据类型:列出预定义的数据类型及其属性。
  • 流概念:Table API或SQL的流特定文档,例如时间属性的配置和更新结果的处理。
  • 连接到外部系统:可用的连接器和格式,用于向外部系统读取和写入数据。
  • Table API:Table API支持的操作和API。
  • SQL:SQL支持的操作和语法。
  • 内置函数:Table API和SQL支持的函数。
  • SQL客户端:使用Flink SQL并在没有编程知识的情况下将表程序提交给集群。

欢迎关注Flink菜鸟公众号,会不定期更新Flink(开发技术)相关的推文

【翻译】Flink Table Api & SQL —— Overview的更多相关文章

  1. Flink Table Api & SQL 翻译目录

    Flink 官网 Table Api & SQL  相关文档的翻译终于完成,这里整理一个安装官网目录顺序一样的目录 [翻译]Flink Table Api & SQL —— Overv ...

  2. 【翻译】Flink Table Api & SQL — 流概念

    本文翻译自官网:Streaming Concepts  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/st ...

  3. 【翻译】Flink Table Api & SQL — 性能调优 — 流式聚合

    本文翻译自官网:Streaming Aggregation  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table ...

  4. 【翻译】Flink Table Api & SQL — 配置

    本文翻译自官网:Configuration https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/config.h ...

  5. 【翻译】Flink Table Api & SQL — Hive —— 在 scala shell 中使用 Hive 连接器

    本文翻译自官网:Use Hive connector in scala shell  https://ci.apache.org/projects/flink/flink-docs-release-1 ...

  6. 【翻译】Flink Table Api & SQL — Hive —— Hive 函数

    本文翻译自官网:Hive Functions  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/hive/h ...

  7. 【翻译】Flink Table Api & SQL — SQL客户端Beta 版

    本文翻译自官网:SQL Client Beta  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sqlCl ...

  8. 【翻译】Flink Table Api & SQL — Hive —— 读写 Hive 表

    本文翻译自官网:Reading & Writing Hive Tables  https://ci.apache.org/projects/flink/flink-docs-release-1 ...

  9. 【翻译】Flink Table Api & SQL —— 概念与通用API

    本文翻译自官网:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/common.html Flink Tabl ...

随机推荐

  1. redis发布订阅实现各类定时业务(优惠券过期,商品不支付自动撤单,自动收货等)

    修改redis配置文件找到机器上redis配置文件conf/redis.conf,新增一行  notify-keyspace-events Ex 最后的Ex代表 监听失效的键值 修改后效果如下图 代码 ...

  2. vscode编写html,常用快捷方式与插件

      一.tab键补全 1.1打开vscode新建html文件,在第一行输入!,然后按下tab键,会直接出现编写html语言的基本框架标签 效果如下: <!DOCTYPE html> < ...

  3. web安全漏洞相关

    1,密码输入框input应该 设置:autocompete="off" 2,设置HTTPOnly,禁止客户端修改cookie 文章:Cookie中的HttpOnly详解 3,不要展 ...

  4. 树莓派 Linux 系统命令行快捷键

    刚入门树莓派时,在 Linux 下使用命令操作的时候,光标的移动令人头痛.命令输入完了,执行之后发现缺少权限,然后不得不移动光标到行首加 sudo,而命令又极长……当我学会了命令行相关的快捷键之后,不 ...

  5. test20190903 JKlover

    100+65+100=265,T2就差了一点. 乌合之众 给出一个 n × n 的, 元素为自然数的矩阵.这个矩阵有许许多多个子矩阵, 定义它的所有子矩阵形成的集合为 S . 对于一个矩阵 k , 定 ...

  6. SparkSQL读写外部数据源-json文件的读写

    object JsonFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .m ...

  7. Spring+mybatis+PageHelper

    为了更简单的实现数据库分页,我们不探讨自己手动修改sql语句分页,这里关于PageHelper自己配置是出现的问题进行记录下: 我采用的是Maven代码托管,在pom.xml进行如下配置: <! ...

  8. 使用idea 调试java -jar xxx.jar方式启动

    今日思语:希望是什么?希望就是 你还在挣扎中... idea是一个功能强大的java开发工具,可以很方便的帮助开发人员进行开发工作. 1.有时我们通过使用java -jar xxx.jar方式启动可执 ...

  9. [VSCode] Adding Custom Syntax Highlighting to a Theme in VSCode

    VSCode Themes are a quick way to update the color scheme and syntax highlighting of your code, but y ...

  10. 数据库服务器和web服务器磁盘占用查询

    对于Oracle数据库而言磁盘空间主要体现在表空间上,可使用sql语句进行查看Oracle 表空间的大小及使用情况: select sum(bytes)/1024/1024/1024 "Gb ...