表API和SQL

ApacheFlink有两个关系API——表API和SQL——用于统一的流和批处理。表API是用于斯卡拉和Java的语言集成查询API,它允许以非常直观的方式从关系运算符(如选择、筛选和连接)组成查询。Flink的SQL支持基于实现SQL标准的[apache calcite](https://calcite.apache.org)。无论输入是批输入(数据集)还是流输入(数据流),在任一接口中指定的查询都具有相同的语义并指定相同的结果。

表API和SQL接口以及Flink的数据流和数据集API紧密集成在一起。您可以轻松地在所有基于API的API和库之间切换。例如,您可以使用[cep library](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/libs/cep.html)从数据流中提取模式,然后使用表API分析模式,或者在运行[gelly graph algorithm](//ci ci.apache.org/projects/fli)之前使用SQL查询扫描、筛选和聚合批处理表。关于预处理数据的nk/flink-docs-release-1.7/dev/libs/gelly)。

请注意,表API和SQL尚未完成功能,正在积极开发中。并非所有操作都支持[Table API,SQL]和[Stream,Batch]输入的每个组合。

步骤

表API和SQL捆绑在“flink table”maven工件中。为了使用表API和SQL,必须将以下依赖项添加到项目中:

  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-table_2.11</artifactId>
  4. <version>1.7.1</version>
  5. </dependency>

此外,您需要为Flink的scala批处理或流式API添加依赖项。对于批查询,需要添加:

  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-scala_2.11</artifactId>
  4. <version>1.7.1</version>
  5. </dependency>

对于流式查询,需要添加:

  1. <dependency>
  2. <groupId>org.apache.flink</groupId>
  3. <artifactId>flink-streaming-scala_2.11</artifactId>
  4. <version>1.7.1</version>
  5. </dependency>

注意:由于Apache方解石中的一个问题,它阻止了用户类加载器被垃圾收集,因此我们不建议构建包含“Flink Table”依赖项的fat-jar。相反,我们建议将flink配置为在系统类加载器中包含“flink table”依赖项。这可以通过将’flink table.jar’文件从./opt'文件夹复制到./lib’文件夹来完成。有关详细信息,请参阅[这些说明](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/linking.html)。

下一步去哪里?

*[概念和公共API](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/common.html):表API和SQL的共享概念和API。

*[流式处理概念](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/streaming):流式处理表API或SQL的特定文档,例如时间属性的配置和更新结果的处理。

*[连接到外部系统](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/functions.html):用于向外部系统读写数据的可用连接器和格式。

*[表API](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/table api.html):支持表API的操作和API。

*[sql](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/sql.html):支持SQL的操作和语法。

*[内置函数](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/functions.html):表API和SQL中支持的函数。

*[sql client](//ci.apache.org/projects/flink/flink-docs-release-1.7/dev/table/sql client.html):与flink-sql一起玩,在不了解编程知识的情况下向集群提交表程序。