【Flink】(十二)Flink Table API 和 Flink SQL 编程(更新中....)1

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 【Flink】(十二)Flink Table API 和 Flink SQL 编程(更新中....)1

文章目录


一、Table API 和 Flink SQL 是什么


二、基本程序结构


三、创建 TableEnvironment


四、表(Table)


五、读取文件创建表


六、读取Kafka数据创建表


七、表的查询 - Table API & SQL


八、表和流的相互转换


一、Table API 和 Flink SQL 是什么


  • Flink 对批处理和流处理,提供了统一的上层API


  • Table API 是一套内嵌在Java和Scala语言中的查询API,它允许以非常直观的方式组合来自一些关系运算符的查询


  • Flink的SQL支持基于实现了SQL标准的Apache Calcite


20200703232724618.png


二、基本程序结构


Table API 和 SQL 的程序结构,与流式处理的程序结构十分类似

val tableEnv = ...   // 创建表的执行环境
// 创建一张表,用于读取数据
tableEnv.connect(...).createTemporaryTable("inputTable")
// 创建一张表,用于把计算结构输出
tableEnv.connect(...).createTemporaryTable("outputTable")
// 通过 Table API 查询算子,得到一张结果表
val result = tableEnv.from("inputTable").select(...)
// 通过 SQL 查询语句,得到一张结果表
val sqlResult = tableEnv.sqlQuery("SELECT ... FROM inputTable ...")
// 将结果表写入输出表中
result.insertInto("outputTable")


三、创建 TableEnvironment


创建表的执行环境,需要将flink流处理的执行环境传入

val tableEnv = StreamTableEnvironment.create(env)


  • TableEnvironment 是 flink 中集成Table API 和 SQL 的核心概念,所有对表的操作都基于 TableEnvironment


  • 注册 Catalog


  • 在 Catalog 中注册表


  • 执行 SQL 查询


  • 注册用户自定义函数(UDF)


不同处理环境的定义:


20200704125257286.png20200704125612403.png20200704125702722.png20200704125903288.png


四、表(Table)


  • TableEnvironment 可以注册目录 Catalog,并可以基于 Catalog 注册表


  • 表(Table)是由一个“标识符”(identifier)来指定的,由3部分组成:Catalog 名、数据库(database)名和对象名


  • 表可以是常规的,也可以是虚拟的(视图,view)


  • 常规表(Table)一般可以用来描述外部数据,比如文件、数据库或消息队列的数据,也可以直接从 DataStream 转换而来


  • 视图(View)可以从现有的表中创建,通常是 table API 或者 SQL 查询的一个结果集


相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
相关文章
|
5月前
|
SQL 人工智能 关系型数据库
Flink CDC YAML:面向数据集成的 API 设计
本文整理自阿里云智能集团 Flink PMC Member & Committer 徐榜江(雪尽)在 FFA 2024 分论坛的分享,涵盖四大主题:Flink CDC、YAML API、Transform + AI 和 Community。文章详细介绍了 Flink CDC 的发展历程及其优势,特别是 YAML API 的设计与实现,以及如何通过 Transform 和 AI 模型集成提升数据处理能力。最后,分享了社区动态和未来规划,欢迎更多开发者加入开源社区,共同推动 Flink CDC 的发展。
570 12
Flink CDC YAML:面向数据集成的 API 设计
|
4月前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
4月前
|
SQL 人工智能 关系型数据库
Flink CDC YAML:面向数据集成的 API 设计
Flink CDC YAML:面向数据集成的 API 设计
100 5
|
4月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
6月前
|
SQL 大数据 数据处理
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是为应对传统数据处理框架中流批分离的问题而诞生的,它融合了SQL的简洁性和Flink的强大流批处理能力,降低了大数据处理门槛。其核心工作原理包括生成逻辑执行计划、查询优化和构建算子树,确保高效执行。Flink SQL 支持过滤、投影、聚合、连接和窗口等常用算子,实现了流批一体处理,极大提高了开发效率和代码复用性。通过统一的API和语法,Flink SQL 能够灵活应对实时和离线数据分析场景,为企业提供强大的数据处理能力。
817 26
|
7月前
|
SQL 存储 缓存
Flink SQL Deduplication 去重以及如何获取最新状态操作
Flink SQL Deduplication 是一种高效的数据去重功能,支持多种数据类型和灵活的配置选项。它通过哈希表、时间窗口和状态管理等技术实现去重,适用于流处理和批处理场景。本文介绍了其特性、原理、实际案例及源码分析,帮助读者更好地理解和应用这一功能。
446 14
|
9月前
|
SQL 大数据 API
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
166 0
|
9月前
|
IDE API 定位技术
Python--API编程:IP地址翻译成实际的物理地址
Python--API编程:IP地址翻译成实际的物理地址
161 0
|
SQL API 开发者
Activiti6 Task查询API 映射 SQL
正好工作中遇到,整理工作流相关内容
|
19天前
|
JSON API 数据格式
淘宝商品评论API接口,json数据示例参考
淘宝开放平台提供了多种API接口来获取商品评论数据,其中taobao.item.reviews.get是一个常用的接口,用于获取指定商品的评论信息。以下是关于该接口的详细介绍和使用方法: