Apache Flink - Bảng API và SQL
API bảng là một API quan hệ với SQL giống như ngôn ngữ biểu thức. API này có thể thực hiện cả xử lý hàng loạt và luồng. Nó có thể được nhúng với Java và Scala Dataset và Datastream APIs. Bạn có thể tạo bảng từ Tập dữ liệu và Luồng dữ liệu hiện có hoặc từ các nguồn dữ liệu bên ngoài. Thông qua API quan hệ này, bạn có thể thực hiện các thao tác như nối, tổng hợp, chọn và lọc. Cho dù đầu vào là hàng loạt hay dòng, ngữ nghĩa của truy vấn vẫn giống nhau.
Đây là một chương trình Table API mẫu -
// 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()