Flink Sql代码举例

import org.apache.flink.api.scala._
import org.apache.flink.table.api.{Table, TableConfig, TableEnvironment}
import org.apache.flink.types.Row
object FlinkSqltest {
  def main(args: Array[String]): Unit = {
    val env = ExecutionEnvironment.getExecutionEnvironment
    val date = env.readTextFile("D:\\ald\\flink_test\\src\\main\\resources\\data")
    val datesteam: DataSet[PlayerData] = date.map(x => {
      val strings = x.split(",")
      PlayerData(strings(0), strings(1), strings(2).toInt, strings(3).toDouble, strings(4).toDouble, strings(5).toDouble, strings(6).toDouble, strings(7).toDouble)
    })
    val tableEnv = TableEnvironment.getTableEnvironment(env)//建立tableenv
    val envtable: Table = tableEnv.fromDataSet(datesteam)//将dateset转换成table
    tableEnv.registerTable("playerinfo", envtable)//注册表
    val table = tableEnv.sqlQuery("select player,count(scores) num from playerinfo group by player order by num desc")
    val dsrow: DataSet[Row] = tableEnv.toDataSet[Row](table)//将表转换为dataset
    dsrow.print()
  }
}

case class PlayerData(season: String, player: String, first_court: Integer, time: Double, assists: Double, steals: Double, blocks: Double, scores: Double)
//17-18,詹姆斯-哈登,72,72,35.4,8.8,1.8,0.7,30.4 //scheam赛季,球员,出场,首发,时间,助攻,抢断,盖帽,得分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flink SQL 代码结构通常包括以下几个部分: 1. 导入所需的 Flink 库和 SQL 相关的库。 2. 创建执行环境和表环境。 3. 定义数据源和数据接收器。 4. 定义 SQL 查询语句。 5. 执行查询语句并将结果输出到数据接收器。 以下是一个简单的 Flink SQL 代码结构示例: ``` import org.apache.flink.api.java.ExecutionEnvironment; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.table.api.Table; import org.apache.flink.table.api.bridge.java.StreamTableEnvironment; import org.apache.flink.table.api.bridge.java.BatchTableEnvironment; public class FlinkSQLExample { public static void main(String[] args) throws Exception { // 创建执行环境和表环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); // 定义数据源和数据接收器 DataStreamSource<String> source = env.socketTextStream("localhost", 9999); DataStreamSink<String> sink = source.print(); // 定义 SQL 查询语句 String query = "SELECT word, COUNT(*) as count FROM input_table GROUP BY word"; // 执行查询语句并将结果输出到数据接收器 Table result = tEnv.sqlQuery(query); DataStream<Tuple2<Boolean, Row>> stream = tEnv.toRetractStream(result, Row.class); stream.map(new MapFunction<Tuple2<Boolean, Row>, String>() { @Override public String map(Tuple2<Boolean, Row> t) throws Exception { return t.f1.toString(); } }).addSink(sink); env.execute("Flink SQL Example"); } } ``` 在这个示例中,我们创建了一个流执行环境和一个流表环境,然后定义了一个从 socket 文本流中读取数据的数据源,并将数据输出到控制台。接下来,我们定义了一个简单的 SQL 查询语句,查询输入表中每个单词的出现次数,并将结果输出到数据接收器。最后,我们使用 `env.execute()` 方法来启动 Flink 作业。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值