Flink Sql 简单应用
import org.apache.flink.api.scala._ import org.apache.flink.table.api._ import org.apache.flink.table.api.bridge.scala._ /* * Table Api * https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/connectors/table/overview/ * 数据: * xiaoming,english,90 * xiaoming,math,80 * xiaohong,english,98 * xiaohong,math,82 * */ object FlinkSql_Test01 { def main(args: Array[String]): Unit = { val settings = EnvironmentSettings .newInstance() .inBatchMode() //批处理 //.inStreamingMode() 流处理 .build(); val tEnv = TableEnvironment.create(settings); //创建sql 第一列是学生姓名,第二列是科目,第三列是分数 //4.通过TABLE API查询所有数据并打印到控制台。 tEnv.executeSql( """ | create table stu ( | name String, | subject String, | core Int | )with( | 'connector' = 'filesystem', --读取文件 | 'path' = 'data/a.csv', --地址 | 'format' = 'csv' --类型 |) |""".stripMargin) tEnv.executeSql("select * from stu").print() //5.统计学生总分数 tEnv.executeSql( """ |select name ,sum(core) from | stu group by name |""".stripMargin).print() //6.统计各科成绩的最高分 tEnv.executeSql( """ |select subject ,sum(core) fs from | stu group by subject order by fs desc limit 1 |""".stripMargin).print() //7.查询出各科成绩的平均分 tEnv.executeSql( """ | |select subject ,avg(core) from | stu group by subject |""".stripMargin).print() //8.统计出总分最高的学生姓名 tEnv.executeSql( """ |select name from ( |select name ,sum(core) zf from | stu group by name order by zf desc limit 1) ss | |""".stripMargin).print() } }
我有一杯酒,足以慰风尘。