Apache Flink - API da tavolo e SQL

L'API della tabella è un'API relazionale con linguaggio di espressione simile a SQL. Questa API può eseguire sia l'elaborazione in batch che in streaming. Può essere integrato con Java e Scala Dataset e API Datastream. È possibile creare tabelle da dataset e datastream esistenti o da origini dati esterne. Attraverso questa API relazionale, puoi eseguire operazioni come unire, aggregare, selezionare e filtrare. Indipendentemente dal fatto che l'input sia batch o flusso, la semantica della query rimane la stessa.

Ecco un esempio di programma API Table:

// 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()