Flink API分层

Flink的API基本可分为三层:

  • Flink SQL/Table
  • Flink DataStream/DataSet
  • Flink 有状态底层处理API

Flink API分层_第1张图片

越是高级API,代码越是简洁,但灵活性会相对的减少,反之同理。

1、高级api - Flink SQL/Table

Flink 支持两种关系型的 API,Table API 和 SQL。这两个 API 都是批处理和流处理统一的 API,这意味着在无边界的实时数据流和有边界的历史记录数据流上,关系型 API 会以相同的语义执行查询,并产生相同的结果。Table API 和 SQL 借助了 Apache Calcite 来进行查询的解析,校验以及优化。它们可以与 DataStream 和 DataSet API 无缝集成,并支持用户自定义的标量函数,聚合函数以及表值函数。

2、核心api - Flink DataStream/DataSet

目前Flink进行流批一体化,DataSet逐步退出,统一使用DataStream API。
DataStream API 为许多通用的流处理操作提供了处理原语。这些操作包括窗口、逐条记录的转换操作,在处理事件时进行外部数据库查询等。DataStream API 支持 Java 和 Scala 语言,预先定义了例如map()、reduce()、aggregate() 等函数。你可以通过扩展实现预定义接口或使用 Java、Scala 的 lambda 表达式实现自定义的函数。

3、低级api - ProcessFunction
低级api是 Flink 所提供的最具表达力的接口,实现许多有状态的事件驱动应用所需要的基于单个事件的复杂业务逻辑。

实现ProcessFunction 接口来进行操作。ProcessFunction 可以处理一或两条输入数据流中的单个事件或者归入一个特定窗口内的多个事件。它提供了对于时间和状态的细粒度控制。开发者可以在其中任意地修改状态,也能够注册定时器用以在未来的某一时刻触发回调函数。

你可能感兴趣的:(Flink实时处理,Flink,api,Flink,api分层)