Apache Flink - API tabel i SQL
Table API to relacyjny interfejs API z językiem wyrażeń podobnym do SQL. Ten interfejs API może wykonywać zarówno przetwarzanie wsadowe, jak i strumieniowe. Może być osadzony za pomocą interfejsów API Java i Scala Dataset oraz Datastream. Możesz tworzyć tabele na podstawie istniejących zestawów danych i strumieni danych lub z zewnętrznych źródeł danych. Za pomocą tego relacyjnego interfejsu API można wykonywać operacje, takie jak łączenie, agregowanie, wybieranie i filtrowanie. Niezależnie od tego, czy dane wejściowe są wsadowe, czy strumieniowe, semantyka zapytania pozostaje taka sama.
Oto przykładowy program Table API -
// 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()