Apache Flink提供了两种顶层的关系型API,分别为Table API和SQL,Flink通过Table API&SQL实现了批流统一。其中Table API是用于Scala和Java的语言集成查询API,它允许以非常直观的方式组合关系运算符(例如select,where和join)的查询。
将DataStream或者DataSet转化为Table对象
可以直接将DataStream或者DataSet转换为Table对象,之后可以使用Table API进行查询操作。
下面演示DataStream的转换,对于DataSet的转换类似。
// 获取StreamTableEnvironment StreamTableEnvironment tableEnv = ...; DataStream> stream = ... // 将DataStream转换为Table对象,默认的字段为"f0", "f1" Table table1 = tableEnv.fromDataStream(stream); // 将DataStream转换为Table对象,默认的字段为"myLong", "myString" Table table2 = tableEnv.fromDataStream(stream, "myLong, myString");
将表转换为DataStream或者DataSet
当将Table转为DataStream或者DataSet时,需要指定DataStream或者DataSet的数据类型。通常最方便的数据类型是row类型,Flink提供了很多的数据类型供用户选择,具体包括Row、POJO、样例类、Tuple和原子类型。



