Flink笔记06——浅谈Table API

本文介绍了Flink的Table API,包括如何创建Table,修改字段名,查询过滤,分组聚合,自定义UDF以及使用Window进行时间窗口操作。Table API提供了一种统一处理批流数据的方式,简化了Flink应用的开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在 Spark 中有 DataFrame 这样的关系型编程接口,因其强大且灵活的表达能力,能够让 用户通过非常丰富的接口对数据进行处理,有效降低了用户的使用成本。Flink 也提供了关 系型编程接口 Table API 以及基于 Table API 的 SQL API,让用户能够通过使用结构化编程 接口高效地构建 Flink 应用。同时 Table API 以及 SQL 能够统一处理批量和实时计算业务, 无须切换修改任何应用代码就能够基于同一套 API 编写流式应用和批量应用,从而达到真正 意义的批流统一。
在这里插入图片描述
1.在进行相关开发前,我们首先导入相关的依赖。

		<!--导入Table API和SQL API所需的依赖-->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner_2.11</artifactId>
            <version>1.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-scala-bridge_2.11</artifactId>
            <version>1.9.1</version>
        </dependency>

2.创建 TableEnvironment 对象

	//使用Flink原生的代码创建TableEnvironment
    val fsSettings = EnvironmentSettings.newInstance().useOldPlanner().inStreamingMode().build()
    val fsEnv = StreamExecutionEnvironment.getExecutionEnvironment
    val fsTableEnv = StreamTableEnvironment.create(fsEnv, fsSettings)

Table API

在 Flink 中创建一张表有两种方法:

  1. 从一个文件中导入表结构(Structure)(常用于批计算)(静态)
  2. 从 DataStream 或者 DataSet 转换成 Table (动态)

创建 Table

Table API 中已经提供了 TableSource 从外部系统获取数据,例如常见的数据库、文件 系统和 Kafka 消息队列等外部系统。

  1. 从文件中创建Table(静态表)
    Flink 允许用户从本地或者分布式文件系统中读取和写入数据,在 Table API 中可以通 过 CsvTableSource 类来创建,只需指定相应的参数即可。但是文件格式必须是 CSV 格式的。 其 他 文 件 格 式 也 支 持 ( 在 Flink 还 有 Connector 的 来 支 持 其 他 格 式 或 者 自 定 义 TableSource)。

    demo如下:

    package com.flink.primary.TableAndSQL
    
    import org.apache.flink.api.scala.typeutils.Types
    import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
    import org.apache.flink.table.api.EnvironmentSettings
    import org.apache.flink.table.api.scala.StreamTableEnvironment
    import org.apache.flink.table.sources.CsvTableSource
    
    /**
      * 从文件中创建 Table(静态表)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值