1、Flink Table API & SQL - 开发基础代码样例和maven依赖

目录

MAVEN依赖结构 

Table 程序依赖

扩展依赖

导览


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

Table API 和 SQL 接口以及 Flink 的 DataStream 和 DataSet API 紧密集成在一起。可以轻松地在所有 api 和基于 api 的库之间切换。例如,可以使用 CEP 库从数据流中提取模型,然后使用 Table API 分析模型,或者在对预处理数据运行 Gelly graph 算法之前,使用SQL scan, filter, 和 aggregate 批处理表。

注意:Table API 和 SQL 还没有完全开发完成。不是支持所有的[Table API, SQL]和[stream, batch]组合。

MAVEN依赖结构 

从Flink1.9开始,提供了两种不同的 planner 实现:Blink planner 和 1.9之前旧的 planner。Planner 负责将算子转换为 Flink 可执行的、优化之后的 Flink job。这两个 Planner 拥有不同的优化规则和 runtime 类。也可能在支持的特性集上有所不同。

注意:在生产环境还是建议使用 Flink 1.9之前的planner

 所有的 Table API 和 SQL 组件都在 flink-table or 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:Flink 1.9 之前的 planner 和 runtime,仍然可用。
  • flink-table-planner-blink:新的 Blink planner
  • flink-table-runtime-blink:新的 Blink runtime
  • flink-table-uber:将上面的 API 模块以及旧的 planner 打包到 Table 和 SQL API 用例的发行版中。默认情况下,uber JAR文件Flink -table-*. jar 位于Flink发行版的/lib目录中。
  • flink-table-uber-blink:将上面的 API 模块以及 Blink 特定的模块打包到 Table 和 SQL API 用例的发行版中。默认情况下,uber JAR文件Flink -table-blink-*. jar 位于Flink发行版的/lib目录中。

有关如何在旧 planner 和 blink planner 之间切换,请查阅://TODO

Table 程序依赖

根据目标编程语言的不同,需要向项目中添加 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 客户机的 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

附录

Table API & SQL 的概念和 通用 APIs

预定义数据类型列表及其属性

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要下载Flink SQL Connector for MySQL CDC,您可以按照以下步骤进行操作: 1. 首先,您需在您的项目中添加Flink SQL Connector for MySQL CDC的依赖项。可以使用Maven或Gradle构建工具来完成这一步骤。在您的项目配置文件中,将以下代码添加到依赖项部分: ``` <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-sql-connector-mysql-cdc_2.11</artifactId> <version>1.13.1</version> </dependency> ``` 2. 在使用Flink SQL Connector for MySQL CDC之前,您需要确保已经安装并启动了Flink集群。您可以从Flink官方网站下载并按照安装说明进行安装。 3. 下一步是配置MySQL的Change Data Capture (CDC)。您可以在MySQL的配置文件中启用CDC功能,并配置要监视的数据库表。具体配置项可能会因MySQL版本而有所不同,您可以参考MySQL的官方文档或相关教程进行操作。 4. 配置完CDC后,您可以使用FlinkTable APISQL语句来读取CDC的数据。可以使用`TableEnvironment`对象来创建与MySQL CDC连接,并定义CDC表。以下是一个示例代码片段: ```java // 创建Flink Table环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); // 注册MySQL CDC Connector String ddl = "CREATE TABLE mysql_cdc_table (..., PRIMARY KEY (id)) " + "WITH (...properties...) "; tableEnv.executeSql(ddl); // 查询CDC数据 String query = "SELECT * FROM mysql_cdc_table"; Table result = tableEnv.sqlQuery(query); // 打印查询结果 tableEnv.toRetractStream(result, Row.class).print(); // 执行作业 env.execute(); ``` 这样,您就可以下载、配置和使用Flink SQL Connector for MySQL CDC来处理MySQL的Change Data Capture数据了。若需要进一步了解和使用该连接器的更多功能,建议参考官方文档或相关教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值