Flink数据结构与类型系统详解

Flink 的数据结构是其区别于其他批处理和流处理框架(如 Spark)的核心之一。其设计哲学是 “有状态的流处理” ,即流处理是基础,批处理是流处理的一种特例。因此,它的数据结构也紧密围绕这一思想构建。

Flink 的数据结构主要可以分为两大类:

  1. 用于编程 API 的数据结构:即用户编写程序时直接操作的数据形式。
  2. 用于内部执行引擎的数据结构:即 Flink 运行时在内部处理和交换数据时使用的格式。

一、编程 API 数据结构

这是开发者最常接触的部分,主要分为两种:

1. DataStream / DataSet (已在 Flink 1.12 后统一为 DataStream API)

虽然现在官方推荐使用统一的 DataStream API 进行批流一体编程,但理解两者的区别有助于理解 Flink 的演进。

  • DataStream

    • 含义:代表一个无界的数据流。数据元素会持续不断地产生和流入。
    • 来源:例如 Kafka、Kinesis、TCP Socket、实时日志文件等。
    • 操作:应用于其上的转换(如 map, filter, keyBy, window)通常是持续进行的。
    • 特点:处理永不停止(除非手动取消),结果会持续增量产出。
  • DataSet

    • 含义:代表一个有界的数据集合。所有要处理的数据在开始处理前就已经是已知且完整的。
    • 来源:例如 HDFS、本地文件系统中的文件、数据库等。
    • 操作:应用于其上的转换会生成一个执行计划,最终一次性计算出结果。
    • 特点:处理有明确的开始和结束,最终产出完整结果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值