Apache Flink - API de tabla y SQL

Table API es una API relacional con lenguaje de expresión similar a SQL. Esta API puede procesar tanto por lotes como por secuencias. Puede integrarse con Java y Scala Dataset y API de Datastream. Puede crear tablas a partir de conjuntos de datos y flujos de datos existentes o de fuentes de datos externas. A través de esta API relacional, puede realizar operaciones como unir, agregar, seleccionar y filtrar. Ya sea que la entrada sea por lotes o en flujo, la semántica de la consulta sigue siendo la misma.

Aquí hay un programa de API de tabla de muestra:

// for batch programs use ExecutionEnvironment instead of StreamExecutionEnvironment
val env = StreamExecutionEnvironment.getExecutionEnvironment

// create a TableEnvironment
val tableEnv = TableEnvironment.getTableEnvironment(env)

// register a Table
tableEnv.registerTable("table1", ...) // or
tableEnv.registerTableSource("table2", ...) // or
tableEnv.registerExternalCatalog("extCat", ...)

// register an output Table
tableEnv.registerTableSink("outputTable", ...);
// create a Table from a Table API query
val tapiResult = tableEnv.scan("table1").select(...)
// Create a Table from a SQL query
val sqlResult = tableEnv.sqlQuery("SELECT ... FROM table2 ...")

// emit a Table API result Table to a TableSink, same for SQL result
tapiResult.insertInto("outputTable")

// execute
env.execute()