【大数据面试题】33 手写一个 Flink SQL 样例

一步一个脚印,一天一道大数据面试题
博主希望能够得到大家的点赞收,藏支持!非常感谢~

点赞,收藏是情分,不点是本分。祝你身体健康,事事顺心!

我们来看看 Flink SQL大概流程和样例:

流程:

1.创建 流处理环境 StreamExecutionEnvironment env

2.创建 表环境 StreamTableEnvironment.create(env);

3.创建 source表,sink 表

4.用 table API 编写查询 SQL(返回 Table 对象)

5.执行 sink executeInsert("sink")

代码样例:

java 复制代码
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.TableEnvironment;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;

import static org.apache.flink.table.api.Expressions.$;

public class SqlDemo2 {
    public static void main(String[] args) {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 1.创建表环境
        // 1.1 方法 1
//        EnvironmentSettings settings = EnvironmentSettings.newInstance()
//                .inStreamingMode()
//                .build();
//        TableEnvironment tableEnv = TableEnvironment.create(settings);

        // 1.2 方法 2
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);

        // 创建表
        // 用 datagen 生成随机数据作为 source
        tableEnv.executeSql("CREATE TABLE source (\n" +
                "    id INT\n" +
                "    ,ts BIGINT\n" +
                "    ,vc INT\n" +
                ") WITH (\n" +
                "    'connector' = 'datagen'\n" +
                "    ,'rows-per-second'='1'\n" +
                "    ,'fields.id.kind'='random'\n" +
                "    ,'fields.id.min'='1'\n" +
                "    ,'fields.id.max'='10'\n" +
                "    ,'fields.ts.kind'='sequence'\n" +
                "    ,'fields.ts.min'='1'\n" +
                "    ,'fields.ts.max'='1000000'\n" +
                "    ,'fields.vc.kind'='random'\n" +
                "    ,'fields.vc.min'='1'\n" +
                "    ,'fields.vc.max'='100'\n" +
                ");\n");

        tableEnv.executeSql("CREATE TABLE sink(\n" +
                "    id INT,\n" +
                "    sumVC INT,\n" +
                ") WITH (\n" +
                "'connector'='print'\n" +
                ");\n");

        // 执行查询
        Table source = tableEnv.from("source");
        Table select = source.where($("id").isGreater(5))
                .groupBy($("id"))
                .aggregate($("vc").sum().as("sumVC"))
                .select($("id"), $("sumVC"));

        // 执行 sink
        select.executeInsert("sink");

    }
}

运行截图:

我是近未来,祝你变得更强!

相关推荐
陈然信息站37 分钟前
皮尔磁纸板进料安全方案选型指南:O300传感器与myPNOZ、PNOZmulti 2对比
大数据·安全·业界资讯
乐维_lwops1 小时前
2026选择运维监控系统时应该重点考察哪些功能?
大数据·运维·人工智能
ifenxi爱分析1 小时前
爱分析发布《2026 爱分析·Data+AI应用实践报告》
大数据·人工智能
Thuni_soft2 小时前
华宇亮相2026药品数智发展大会:AI助推医疗器械审评审批提质增效
大数据·人工智能
可乐ea2 小时前
Git 基础设施重建:智能体规模开发下的读写解耦
大数据·git·elasticsearch·分布式存储·git基础设施·智能体规模开发·读写解耦
2601_967212722 小时前
智能供电轨道系统供应商技术筛选维度与选型指南
大数据·经验分享
EatFan2 小时前
AI Agent Harness 元年:从框架混战到运行时收敛,2026 年 Agent 基础设施分层重构解读
大数据·人工智能·重构·ai agent·mcp·a2a·agent harness
瑞熙贝通实验室综合管理平台2 小时前
实验动物中心|LAMS实验动物智慧管理系统标准解决方案|新一代合规化、智能化、全闭环实验动物中心数字化管控方案
大数据
Gu_WenYun2 小时前
1+N 管家模式重塑家庭财富管理:本元家办的全周期实践路径
大数据·金融
2601_960356382 小时前
2027校招:数据科学与大数据技术专业应聘数字化解决方案顾问的能力准备清单
大数据