Flink 表API和SQL

  • API

    表 API 是具有类似表达式语言的SQL的关系API。此API可以执行批处理和流处理。它可以与Java和Scala数据集以及数据流API一起嵌入。您可以从现有数据集和数据流或从外部数据源创建表。通过此关系API,您可以执行连接,聚合,选择和过滤之类的操作。无论输入是批处理还是流,查询的语义都保持不变。
    这是一个示例表API程序-
    
    // 对于批处理程序,使用ExecutionEnvironment而不是StreamExecutionEnvironment
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    
    // 创建一个TableEnvironment
    val tableEnv = TableEnvironment.getTableEnvironment(env)
    
    // 注册表
    tableEnv.registerTable("table1", ...) // or
    tableEnv.registerTableSource("table2", ...) // or
    tableEnv.registerExternalCatalog("extCat", ...)
    
    // 注册一个输出表
    tableEnv.registerTableSink("outputTable", ...);
    // 从表API查询创建一个表
    val tapiResult = tableEnv.scan("table1").select(...)
    // 根据SQL查询创建一个表
    val sqlResult = tableEnv.sqlQuery("SELECT ... FROM table2 ...")
    
    // 将表API结果表发送到 TableSink , SQL结果也是如此
    tapiResult.insertInto("outputTable")
    
    // 执行
    env.execute()