Apache Flink features two relational APIs - the Table API and SQL - for unified stream and batch
processing. The Table API is a language-integrated query API for Java, Scala, and Python that
allows the composition of queries from relational operators such as selection, filter, and join in
a very intuitive way. Flink’s SQL support is based on Apache Calcite
which implements the SQL standard. Queries specified in either interface have the same semantics
and specify the same result regardless of whether the input is continuous (streaming) or bounded (batch).
The Table API and SQL interfaces integrate seamlessly with each other and Flink’s DataStream API.
You can easily switch between all APIs and libraries which build upon them.
For instance, you can detect patterns from a table using MATCH_RECOGNIZE clause
and later use the DataStream API to build alerting based on the matched patterns.
Table planners are responsible for translating relational operators into an executable, optimized Flink job.
Flink supports two different planner implementations; the modern Blink planner and the legacy planner.
For production use cases, we recommend the Blink planner which has been the default planner since 1.11.
See the common API page for more information on how to switch between the two planners.
Table Program Dependencies
Depending on the target programming language, you need to add the Java or Scala API to a project
in order to use the Table API & SQL for defining pipelines.
Additionally, if you want to run the Table API & SQL programs locally within your IDE, you must add the
following set of modules, depending which planner you want to use.