Flink本地idea运行环境配置webui

Flink本地idea运行环境配置webui

1.添加依赖
c 复制代码
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-runtime-web_2.11</artifactId>
            <version>1.13.6</version>
            <scope>provided</scope>
        </dependency>
2. 代码如下
c 复制代码
public class FlinkWithLocalWebui {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        conf.setString(RestOptions.BIND_PORT, "8081"); // 设置WebUI端口为8081
        StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(conf); // 创建带有WebUI的本地流执行环境
        env.setParallelism(1); // 设置并行度为1
        DataStream<Map<String, String>> stream = env.addSource(new SourceFunction<Map<String, String>>() {
                    @Override
                    public void run(SourceContext<Map<String, String>> ctx) throws Exception {
                        while (true) {
                            HashMap<String, String> hashMap = new HashMap<>();
                            hashMap.put("ID", new Random().nextInt(3) + 1 + ""); // 随机生成ID
                            hashMap.put("AMT", "1"); // 设置AMT为1
                            System.out.println("生产数据:" + hashMap); // 打印生产的数据
                            ctx.collect(hashMap); // 发射数据
                            Thread.sleep(1000); // 每隔1秒发送一次数据
                        }
                    }

                    @Override
                    public void cancel() {
                    }
                })
                // 按照ID字段进行分区
                .keyBy(new KeySelector<Map<String, String>, String>() {
                    @Override
                    public String getKey(Map<String, String> value) throws Exception {
                        return value.get("ID");
                    }
                })
                // 对AMT字段进行累加
                .reduce(new ReduceFunction<Map<String, String>>() {
                    @Override
                    public Map<String, String> reduce(Map<String, String> value1, Map<String, String> value2) throws Exception {
                        HashMap<String, String> hashMap = new HashMap<>();
                        hashMap.put("ID", value1.get("ID"));
                        hashMap.put("AMT", Integer.valueOf(value1.get("AMT")) + Integer.valueOf(value2.get("AMT")) + "");
                        return hashMap;
                    }
                });
        // 输出数据流
        stream.print();
        // 执行作业并指定作业名称
        env.execute("job-" + FlinkWithLocalWebui.class.getSimpleName());
    }
}
//这段代码是一个基于Apache Flink的实时数据处理程序。
//程序创建了一个带有WebUI的本地流执行环境,设置了并行度为1。
//通过自定义的SourceFunction生成随机数据流,数据包含ID和AMT字段,每秒发送一次数据。
//然后对数据流按照ID字段进行分区,并对AMT字段进行累加操作。
//最后,将处理后的数据流打印输出,并执行作业。
//整体流程是一个简单的实时数据处理流水线,用于生成、处理和输出数据流。
3. 执行结果:
c 复制代码
生产数据:{AMT=1, ID=3}
{AMT=1, ID=3}
生产数据:{AMT=1, ID=1}
{AMT=1, ID=1}
生产数据:{AMT=1, ID=2}
{AMT=1, ID=2}
...
生产数据:{AMT=1, ID=2}
{AMT=9, ID=2}
生产数据:{AMT=1, ID=3}
{AMT=13, ID=3}
生产数据:{AMT=1, ID=3}
...
4. 访问Webui,截图如下:

地址:http://localhost:8081/#/overview

相关推荐
摇滚侠5 分钟前
JDBC 基础到高级一套通关!进阶篇 16-27
java
明志数科27 分钟前
4D时序标注技术详解:让机器人理解连续动作的数据基础
java·算法·机器人
_qingche33 分钟前
H2 数据库到 MySQL 数据迁移
java·数据库·spring boot·mysql·spring·重构·kotlin
可乐ea1 小时前
【知识获取与分享社区项目 | 项目日记第 21 天】索引构建与联想建议:Outbox 增量更新 + Completion Suggester
java·大数据·mysql·elasticsearch·搜索引擎
RainCity1 小时前
Java Swing 自定义组件库分享(十一)
java·笔记·后端
好家伙VCC1 小时前
Qdrant + LangChain 实战:构建毫秒级语义检索服务
java·langchain
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第93题】【Mysql篇】第23题:从查找速度来看,聚集索引和非聚集索引哪个更快?
java·开发语言·数据库·mysql·面试
摇滚侠2 小时前
JDBC 基础到高级一套通关!高级篇 28-40
java
Smoothcloud润云2 小时前
5大功能精修,重构AI算力使用体验!
java·人工智能·windows·算法·重构·编辑器·sublime text
我是唐青枫2 小时前
Java MyBatis-Flex 实战指南:从 BaseMapper 到 QueryWrapper 的轻量 ORM 用法
java·开发语言·mybatis