Flink新手必看:用IntelliJ IDEA和Maven从零搭建WordCount项目(附完整代码)

MacOS 在 Intellij IDEA 上配置 Flink-1.8.0 环境 文章目录1 简介2 配置先决条件2.1 系统2.2 Java 环境2.3 Intellij IDEA2.4 Maven2.5 Flink3 创建 Maven 项目3.1 进入到你想创建项目的工作目录3.2 使用 Maven 创建项目3.3 使用 IntelliJ IDEA 打开创建好的项目Step 1: 打开 Intellij IDEA,选择 Import ProjectStep 2: 选择 Im... 阅读详情

从零到一:用 IntelliJ IDEA 与 Maven 构建你的第一个 Flink WordCount 应用

如果你刚刚接触 Apache Flink,面对“流批一体”、“状态计算”这些概念感到有些无从下手,那么恭喜你,这篇文章正是为你准备的。我见过不少开发者,在理论学习后,第一个实操项目往往卡在环境配置和代码结构上,那种“明明看懂了,就是跑不起来”的挫败感,我深有体会。今天,我们就彻底抛开复杂的理论,聚焦于一个最经典、也最具代表性的入门案例——WordCount(词频统计)。我们将手把手地,在 IntelliJ IDEA 这个强大的 IDE 中,借助 Maven 管理依赖,从零搭建一个完整的 Flink 项目。无论你是 Java 开发者想拓展技术栈,还是数据领域的新人寻求一个扎实的起点,这篇指南都将为你铺平从“知道”到“做到”的第一公里。我们的目标很简单:让你在半小时内,看到一个由自己亲手编写的 Flink 程序成功运行并输出结果,建立起最初始的信心和手感。

1. 环境准备:打造你的专属 Flink 开发工作站

在开始敲代码之前,一个稳定、高效的开发环境是成功的基石。不同于一些简单的脚本语言,Flink 作为企业级分布式流处理框架,对本地开发环境有一定的要求。别担心,跟着步骤来,一切都会很顺畅。

首先,确保你的操作系统上已经安装了 Java 8 或 Java 11。Flink 与更高版本的 Java 可能存在兼容性问题,因此 JDK 8 是目前最稳妥的选择。你可以在终端或命令提示符中输入 java -version 来验证。如果尚未安装,建议直接从 Oracle 官网或 AdoptOpenJDK 等渠道获取安装包。

接下来是我们的主力工具:IntelliJ IDEA。我强烈推荐使用社区版,它对个人开发者完全免费,并且已经集成了我们所需的大部分功能。安装过程就是标准的“下一步”操作,这里不再赘述。安装完成后,首次启动时,建议进行两项关键配置:

  1. 配置 Maven:IDEA 内置了 Maven,但为了更好的依赖下载速度(尤其是在国内),我们通常需要配置镜像仓库。进入 File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven,在 User settings file 和 Local repository 处,你可以指向自己已有的配置文件(settings.xml)和本地仓库路径。一个高效的 settings.xml 镜像配置能为你节省大量等待时间。
  2. 安装必要插件:虽然基础开发不需要额外插件,但像 Git Integration 对于代码版本管理,以及 .ignore 插件用于生成 .gitignore 文件(避免将 IDE 配置文件、依赖包等提交到仓库)都是非常实用的。你可以在 File -> Settings -> Plugins 中搜索并安装它们。

注意:请勿在开发环境中安装任何与网络代理、加速器相关的插件或进行相关配置,确保所有开发活动均在合规合法的网络环境下进行,直接使用 Maven 官方或国内公认的镜像源即可。

为了让你对环境组件有一个清晰的认识,我整理了以下对照表:

组件推荐版本核心作用验证命令
JDK1.8.0_301+ 或 11.0.x提供 Java 运行时和编译环境java -version
IntelliJ IDEA2023.2+ (Community)集成开发环境,提供编码、调试、运行支持启动后查看关于窗口
Maven3.6.3+ (内置于IDEA)项目构建与依赖管理mvn -v 或在IDEA中查看
系统环境Windows 10/11, macOS, Linux基础操作系统平台-

当上述环境都验证无误后,你的 Flink 开发工作站就准备就绪了。我们即将进入最令人兴奋的环节——创建项目。

2. 项目创建与依赖配置:构建坚实的工程骨架

很多新手会直接打开 IDEA 就开始写 Java 类,但对于一个现代 Java 项目,尤其是像 Flink 这样依赖众多第三方库的项目,正确的工程结构至关重要。Maven 能帮助我们自动化处理这些繁琐的事情。

启动 IntelliJ IDEA,在欢迎界面点击 “New Project”。在弹出的窗口中,左侧选择 “Maven”,右侧确保 JDK 已经正确指向我们之前安装的版本(如 1.8)。这里有一个关键点:不要勾选任何 Archetype(项目模板)。对于 Flink 入门项目,我们从最纯净的 Maven 项目开始,能更好地理解每一部分配置的意义。点击 Next,为你的项目起一个名字,例如 flink-quickstart,并选择好项目存放的目录。

项目创建成功后,你会看到一个标准的 Maven 项目结构。核心配置文件是根目录下的 pom.xml 文件。它就像是项目的“蓝图”,定义了项目信息、依赖库和构建方式。现在,打开 pom.xml,我们需要对其进行改造,引入 Flink 的核心能力。

首先,在 <project> 标签下,我们添加 <properties> 块来定义统一的版本号,这有利于后续依赖版本的统一管理:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <flink.version>1.17.2</flink.version>
    <slf4j.version>1.7.36</slf4j.version>
</properties>

这里我们指定了 Flink 的版本为 1.17.2,这是当前一个稳定且功能丰富的版本。同时指定了 Java 编译版本和日志框架 SLF4J 的版本。

接下来是重头戏:添加依赖。在 <dependencies> 标签内,我们需要引入以下库:

<dependencies>
    <!-- Flink 流处理核心API (Java) -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java</artifactId>
        <version>${flink.version}</version>
        <scope>provided</scope>
    </dependency>

    <!-- Flink 客户端,用于本地执行和提交作业 -->
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-clients</artifactId>
        <version>${flink.version}</version>
        <scope>provided</scope>
    </dependency>

    <!-- 日志门面 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <!-- 日志实现:使用简单的log4j2绑定 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

关键解读:

  • flink-streaming-java 是 Flink 流处理 API 的核心,我们后续编写的所有数据处理逻辑都基于它。
  • flink-clients 允许我们在 IDE 内直接运行 Flink 作业,对于本地开发和调试不可或缺。
  • 将这两个依赖的 <scope> 设置为 provided 意味着它们由运行时环境(如 Flink 集群)提供,在打最终部署包时可以减小 JAR 文件体积。
  • 日志组件是为了在控制台看到清晰的运行信息,避免使用 Flink 自带的复杂日志配置,slf4j-simple 是一个轻量级的选择。

保存 pom.xml 文件后,IDEA 通常会提示你导入更改。点击提示,或者右键项目选择 Maven -> Reload Project,Maven 就会开始从仓库下载所有必需的依赖包。首次下载可能需要一些时间,请耐心等待。当 IDEA 底部的进度条消失且不再有错误提示时,说明依赖配置成功,项目的“骨架”已经坚实地搭建起来了。

3. 编写有界流 WordCount:理解批处理的本质

现在,让我们开始编写第一个 Flink 程序。我们从一个经典的“有界流”开始,也就是处理一个已知的、有限的数据集,比如一个文本文件。这有助于我们直观地理解 Flink API 的基本构成。

首先,在 src/main/java 目录下,新建一个包,例如 com.yourname.flink.quickstart。然后,在该包下创建一个 Java 类,命名为 BoundedStreamWordCount。

第一步:创建执行环境 这是所有 Flink 程序的起点。执行环境(StreamExecutionEnvironment)决定了程序是在本地 IDE 中运行,还是在远程集群上运行。

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

public class BoundedStreamWordCount {
    public static void main(String[] args) throws Exception {
        // 1. 创建流处理执行环境(本地模式)
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        // 为了方便观察,设置并行度为1
        env.setParallelism(1);
    }
}

getExecutionEnvironment() 方法很智能,在 IDE 中运行时,它会自动创建一个本地执行环境;如果你将作业提交到集群,它会获取集群的环境。

第二步:读取源数据(Source) 我们将从一个本地文本文件读取数据。在项目根目录下创建一个 data 文件夹,并在里面新建一个 words.txt 文件,随意写入几行英文句子,例如:

hello world
hello flink
hello java world

然后在代码中读取它:

// 2. 从文本文件读取数据,得到数据流(DataStream)
DataStreamSource<String> lineStream = env.readTextFile("data/words.txt");

readTextFile 返回一个 DataStreamSource<String> 对象,它代表了一个数据流,其中的每个元素就是文件中的一行文本。

第三步:数据转换(Transformation) 这是 Flink 编程的核心。我们需要将每一行文本拆分成单词,并将每个单词映射成 (单词, 1) 这样的二元组,以便后续计数。

这里我们使用 Lambda 表达式让代码更简洁:

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;

// 3. 转换操作:切分单词,转换成(word, 1)的二元组
SingleOutputStreamOperator<Tuple2<String, Integer>> wordAndOneStream = lineStream
    .flatMap((String line, Collector<Tuple2<String, Integer>> out) -> {
        // 按空格切分每一行
        String[] words = line.split("\\s+");
        for (String word : words) {
            // 收集每个单词及其初始计数1
            out.collect(Tuple2.of(word.toLowerCase(), 1)); // 转为小写,使统计更准确
        }
    })
    // 由于使用Lambda,需要显式指定返回类型信息
    .returns(Types.TUPLE(Types.STRING, Types.INT));
  • flatMap 操作可以将一个输入元素映射为零个、一个或多个输出元素。这里一行文本被“拍扁”成了多个 (word, 1) 元组。
  • Tuple2 是 Flink 提供的一个二元组类型,f0 和 f1 分别对应两个字段。
  • .returns(...) 是 Java 泛型类型擦除导致的必要声明,用于告诉 Flink 算子输出数据的准确类型。

第四步:分组与聚合 现在我们需要将相同的单词分到一组,然后对组内的数字“1”进行求和。

import org.apache.flink.streaming.api.datastream.KeyedStream;

// 4. 分组:按照单词(即元组的第一个字段)进行分组
KeyedStream<Tuple2<String, Integer>, String> keyedStream = wordAndOneStream.keyBy(data -> data.f0);

// 5. 聚合:将同一分组内的计数累加
SingleOutputStreamOperator<Tuple2<String, Integer>> resultStream = keyedStream.sum(1);
  • keyBy 是 Flink 中一个非常重要的操作,它根据指定的键(key)将流中的数据重新分区,相同 key 的数据会被发送到同一个并行任务中处理。这里我们使用 data -> data.f0 这个 Lambda 表达式指定以单词作为 key。
  • sum(1) 表示对二元组中索引为 1 的字段(即计数)进行求和。

第五步:输出结果(Sink)与执行 最后,我们将结果打印到控制台,并触发作业执行。

// 6. 输出结果到控制台
resultStream.print();

// 7. 触发作业执行(必须调用)
env.execute("Bounded Stream WordCount Job");

完整的代码组合起来,你的第一个 Flink 作业就完成了。右键点击类文件,选择 Run 'BoundedStreamWordCount.main()'。你会在控制台看到类似如下的输出:

(hello,1)
(world,1)
(hello,2)
(flink,1)
(hello,3)
(java,1)
(world,2)

观察输出顺序,你会发现它是流式的,即处理完一行数据就输出一行或几行的中间结果。这正是 Flink 作为流处理框架的默认行为。即使我们的数据源是“有界”的文件,Flink 也将其视为一个很快就会结束的“流”来处理。

4. 进阶:编写无界流 WordCount 与核心概念深化

理解了有界流处理,我们就可以挑战更接近真实生产场景的无界流处理了。无界流意味着数据源会持续不断地产生新数据,没有明确的终点,例如实时日志流、传感器数据、用户点击事件流等。

为了在本地模拟无界流,一个经典的方法是使用 Socket。我们将编写一个程序,监听某个网络端口,任何向该端口发送的文本行都会被实时处理。

创建一个新类 UnboundedStreamWordCount。代码结构与有界流版本非常相似,主要区别在于数据源。

第一步:创建 Socket 数据源 我们需要将 readTextFile 替换为 socketTextStream。

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.datastream.DataStreamSource;

public class UnboundedStreamWordCount {
    public static void main(String[] args) throws Exception {
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);

        // 从Socket端口读取数据,参数:主机名,端口号
        // 本地测试可以用 "localhost" 或 "127.0.0.1"
        DataStreamSource<String> socketStream = env.socketTextStream("localhost", 9999);

        // ... 后续的 flatMap, keyBy, sum 转换操作与有界流完全相同 ...
        // 假设我们已经得到了 resultStream

        resultStream.print();
        env.execute("Unbounded Socket WordCount Job");
    }
}

第二步:准备数据发送端 在运行上述 Flink 程序之前,你需要先启动一个 Socket 服务来发送数据。在 Linux 或 macOS 终端,可以使用 nc (netcat) 命令。在 Windows 10/11 上,你可以使用 WSL (Windows Subsystem for Linux) 中的 nc,或者使用 PowerShell 的 Test-NetConnection 配合其他工具,或者使用一个简单的 Python 脚本。

这里提供一个更通用的方法:使用 Java 写一个简单的数据发送客户端。在项目中新建一个测试类 SocketDataSender:

import java.io.OutputStream;
import java.net.Socket;

public class SocketDataSender {
    public static void main(String[] args) throws Exception {
        String host = "localhost";
        int port = 9999;

        try (Socket socket = new Socket(host, port);
             OutputStream output = socket.getOutputStream()) {

            System.out.println("Connected to server. Start typing lines (type 'exit' to quit):");
            // 这里为了演示,我们发送预设的数据
            String[] lines = {
                "flink is powerful",
                "stream processing with flink",
                "hello realtime world",
                "exit" // 发送一个特殊指令让客户端退出,但服务端Flink作业仍在运行
            };

            for (String line : lines) {
                output.write((line + "\n").getBytes());
                output.flush();
                System.out.println("Sent: " + line);
                Thread.sleep(1000); // 模拟数据间隔
            }
        }
        System.out.println("Data sender finished.");
    }
}

运行顺序至关重要:

  1. 首先运行 UnboundedStreamWordCount 主类。程序会启动并监听本地的 9999 端口,等待数据。此时控制台可能没有输出,处于等待状态。
  2. 接着运行 SocketDataSender。你会看到发送端逐行发送数据,同时 Flink 作业的控制台会实时打印出每个批次处理后的词频统计结果。

你会观察到,每次发送一行新数据,Flink 的输出都会更新相关单词的计数。这就是无界流处理的直观体验:数据源源不断,计算持续进行,结果动态更新。

核心概念深化:流与批的统一 通过这两个例子,你已经实践了 Flink 的核心设计哲学——流批一体。你可能会有疑问:第一个例子处理文件,更像是“批处理”,为什么我们也用 StreamExecutionEnvironment?

这正是 Flink 的巧妙之处。在 Flink 看来,批处理只是流处理的一个特例,是数据有边界(Bounded)的流。你可以通过一个简单的配置,让同一个流处理程序以批处理模式执行,从而获得更高的吞吐量。

// 在创建环境后,设置运行时模式为 BATCH
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setRuntimeMode(RuntimeExecutionMode.BATCH); // 关键行!

当你以 BATCH 模式运行第一个文件处理的例子时,你会发现输出结果只有最终汇总,而没有了中间过程。因为批处理模式会优化执行计划,等待所有数据就绪后再进行全局聚合,这更符合我们对“批处理”的认知。你只需要改动这一行配置,无需重写任何业务逻辑代码,就实现了流和批的切换。

5. 调试、优化与下一步探索指南

成功运行 WordCount 只是第一步。在实际开发中,你肯定会遇到各种问题。这里分享几个我早期踩坑后总结的实用技巧。

常见问题排查清单:

  • 依赖冲突:如果遇到 NoSuchMethodError 或 ClassNotFoundException,很可能是依赖版本冲突。使用 mvn dependency:tree 命令查看依赖树,排除掉重复或低版本的传递依赖。
  • 本地执行无输出:检查 env.execute() 是否被调用。这是触发作业执行的“开关”,没有它,前面定义的所有转换操作都只是构建了一个执行计划,不会真正运行。
  • Socket 连接失败:确保端口没有被占用,防火墙没有阻止连接,并且先启动 Flink 作业(服务端),再启动数据发送客户端。

使用 IDEA 高效调试: Flink 作业在 IDEA 中可以直接像调试普通 Java 程序一样设置断点。特别是在 flatMap、keyBy 等算子的函数体内设置断点,可以一步步观察数据的流转,这对于理解 Flink 的内部机制非常有帮助。

代码结构优化建议: 当逻辑变复杂时,不要把所有代码都堆在 main 方法里。将关键的转换逻辑(如 flatMap 函数)抽取成独立的静态内部类或单独的类,实现对应的 FlatMapFunction、MapFunction 等接口,这样代码更清晰,也便于单元测试。

// 将业务逻辑抽取出来
public static class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
    @Override
    public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
        for (String word : value.split("\\s+")) {
            out.collect(Tuple2.of(word.toLowerCase(), 1));
        }
    }
}

// 在main方法中简洁调用
wordAndOneStream = lineStream.flatMap(new Tokenizer());

性能初探:并行度 我们之前一直设置 env.setParallelism(1),这是为了方便观察。在实际生产中,你需要根据数据量和资源情况设置合理的并行度。并行度决定了每个算子有多少个并行的子任务在执行。你可以在执行环境级别设置全局并行度,也可以在每个算子后面单独设置。

env.setParallelism(4); // 设置全局并行度为4
// 或者单独为某个算子设置
resultStream.print().setParallelism(1); // 输出算子只用1个并行度

下一步该学什么? 恭喜你,已经跨过了 Flink 编程的第一道门槛。WordCount 就像编程界的“Hello World”,它简单,但蕴含了数据读取、转换、分组、聚合、输出这一完整的数据处理链路。基于这个坚实的基础,你可以沿着以下几个方向深入:

  1. 连接外部真实数据源:尝试从 Kafka、MySQL、文件系统(HDFS/S3)读取数据。
  2. 学习状态(State)管理:这是流处理的核心,用于记住过去的信息(如过去5分钟的滚动计数)。
  3. 探索时间语义与窗口:学习如何处理“事件时间”(Event Time),以及如何定义滚动窗口、滑动窗口、会话窗口来进行周期性的聚合计算。
  4. 了解容错机制:研究 Checkpoint 和 Savepoint 如何实现作业的故障恢复和状态一致性。

记住,最好的学习方式就是在理解基本概念后,尽快去动手实现一个稍微复杂一点但自己感兴趣的小项目,比如实时统计网站访问的独立IP数,或者计算实时交易金额的移动平均值。在解决具体问题的过程中,你会遇到更多细节,查阅官方文档和社区讨论,你的理解才会真正牢固起来。Flink 的官方文档非常详尽,并且提供了大量的示例代码,是你接下来最值得信赖的伙伴。

【Flink】从零到一:手把手搭建你的第一个Flink开发环境 本文详细介绍了如何从零开始搭建Flink开发环境,包括Java环境准备、Flink安装包获取、本地集群启动、项目创建、WordCount示例编写以及项目打包与集群提交。通过手把手教程,帮助开发者快速掌握Flink环境搭建和基础开发流程,适合初学者入门。 阅读详情

相关推荐

【零基础学flink】flink实战(idea版本)

回顾 上一小节中我们介绍了flink的安装,以及flink word count的实现,本文主要介绍如何使用idea开发flink项目 一、新建Maven项目 这一步比较简单,网上也有很多教程,主要是使用maven来管理依赖包 二、pom的配置 <dependency> <groupId>org.apache.flink</gr...

我的博客 1030

idea快速创建flink项目

本文将介绍如何使用idea快速创建flink项目。

Wingkin的博客 1万+

IDEA搭建Flink开发环境及WordCount

1、创建一个Maven项目并配置Java SDK和Scala SDK,如图: 这里选择的是jdk1.8和scala2.12版本。 2、添加pom依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

L 3241

秒懂Flink:从零开始搭建Flink开发环境完整指南

Flink作为当前最流行的流处理框架之一,广泛应用于实时数据处理、流批一体等场景。本指南将帮助新手快速搭建Flink开发环境,掌握从环境准备到项目运行的完整流程,让你轻松入门Flink开发。 ## 一、开发环境准备条件 在开始搭建Flink开发环境前,请确保你的系统满足以下基本要求: - **JDK版本**:1.8或更高版本(推荐JDK 8,与项目中Flink 1.14.0版本兼容性最佳)

gitblog_00390的博客 1127

Apache Flink连载(五):Apache Flink快速入门 - 环境准备及入门案例

学习一门新的编程语言时,往往会从“hello world”程序开始,而接触一套新的大数据计算框架时,则一般会从WordCount案例入手,下面以大数据中最经典入门案例WordCount为例,来编写Flink代码,Flink底层源码是基于Java代码进行开发,在Flink编程中我们除了可以使用Java语言来进行编写Flink程序外,还可以使用Scala、Python语言来进行编写Flink程序,在后续章节中我们将会主要使用Java和Scala来编写Flink程序。下面来准备下Flink开发环境。

qq_32020645的博客 1095

基于ensp大学网络规划与设计(完整文档+ensp拓扑图)

大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。 作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量的经验。我相信分享是一种双赢的方式,通过分享,我可以帮助他人提升技术水平,同时也能够得到学习交流的机会。 在我的文章中,你将会看到我对于各种编程语言、开发工具以及常见问题的解析和分析。我会结合自己的实际项目经验,为你提供实用的解决方案和优化技巧。我相信这些经验不仅能够

qq1325513482的博客 5万+

Flink系列——1 Idea的Flink开发环境搭建与Flink Wordcount 测试

1 下载Java 1 Flink 下载 Flink官网下载地址 随便选个下载,本文以Flink 1.13.1为例,注意链接名称“for scala 2.12”,后面在idea下载scala时必须下载scala 2.12版。 下载完成解压,一会使用。 2 IDEA 下载 3 scala 打开idea,创建项目。 File——>ProjectStrure——>Libraries 点击“+”,选择Scala SDK,点击download,下载与Flink一致的scala版本。完成。 ...

张之海的博客 4114

别再折腾CUDA了!Win11上VSCode一键配置PyTorch GPU环境(附Anaconda虚拟环境避坑指南)

本文提供Win11系统下使用VSCode和Anaconda一键配置PyTorch GPU环境的详细指南,解决CUDA版本冲突等常见问题。通过conda的原子化依赖解决方案,安装时间从2小时缩短至15分钟,适合深度学习初学者快速搭建开发环境。

weixin_33101399的博客 247

idea使用maven快速构建flink骨架项目

Scala版Flink程序编写 本项目使用的Flink版本为最新版本,也就是1.11.2。现在提供maven项目的配置文件。 使用Intellij IDEA创建一个Maven新项目 勾选Create from archetype,然后点击Add Archetype按钮 GroupId中输入org.apache.flink,ArtifactId中输入flink-quickstart-scala,Version中输入1.11.2,然后点击OK 点击向右箭头,出现下拉列表,选中flink-quickstart-s

Mr.Zheng的博客 1900

Chapter 19 Digital Phase-Locked Loops

数字锁相环 Digital Phase-Locked Loops, 就是根据原来时钟信号, 产生新的时钟信号, which is locked or synchronized. (align 参考时钟边沿 or 在中间)

2304_76736886的博客 973

Win10 Xbox游戏安装错误终极解决方案

Win10 Xbox游戏安装错误终极解决方案作为Windows 10系统深度用户,相信不少玩家都遇到过Xbox应用安装游戏失败的问题。这类问题轻则影响游戏体验,重则导致系统资源占用异常。本文将结合微软官方技术文档与实际维修案例,系统讲解Xbox游戏安装错误的深层原因与解决方案,帮助读者建立完整的故障处理思维体系。

mmoo_python的博客 2065

三 搭建 flink 开发环境(idea)

文章目录1 在 idea 中添加依赖1.1 在创建目录时添加2 编写代码2.1 创建运行时环境2.2 添加 source生成流2.2.1 fromElements方法专门用几台数据生成流.2.2.2 也可以用socket来生成流:2.3 计算2.4 添加sink2.5 执行程序2.6 编译执行或者打成jar包3 jar在flink上运行3.1 启动 Flink 集群3.2 提交打包好的 JAR 包3.3 停止 Flink 集群3.4 查看标准输出日志的位置,在 log 文件夹中 1 在 idea 中添加依赖

andy的博客 1648

科研问答:医药类本科生(临床、中医、中药与护理)本科阶段是否需要开展科研学习?

医药类本科生(临床、中医、中药与护理)本科阶段是否需要开展科研学习?

MD Code 1508

intellij运行flink的wordcount实验-Java版本

########################项目结构#################################################### ├──pom.xml ├── src │├── main ││├── java │││└── WordCount.java ││└── resources #############################实验步骤#####################################...

微电子学与固体电子学-俞驰 1172

基于YOLOv8的MVTec AD缺陷检测系统设计与实现

速度快,精度高;支持 anchor-free 架构;支持实例分割和图像分类;模块化代码,易于部署与改进;完美兼容 ONNX、TensorRT 等推理框架;官方支持多平台训练和推理(CPU/GPU)。YOLOv8 是工业视觉检测落地非常理想的选择。MVTec AD(Anomaly Detection)数据集包括15类工业对象,每个对象包括多个子类缺陷(例如 “scratch”, “crack”, “hole”)及正常图像。类别缺陷子类bottlecablecapsule。

YOLO 931

按角色定制同一张 Fiori 画面:一篇讲透 SAP Fiori UI Adaptation for Roles 的版本、优先级、视图迁移与安全边界

摘要:SAP Fiori应用中常见的问题并非功能缺失,而是同一应用被不同岗位用于不同工作流时导致界面难以满足各方需求。SAP的"角色适配UI"机制允许在不修改后端逻辑或创建新应用的情况下,为不同角色定制界面呈现。该机制包含多套界面适配方案,按用户角色自动匹配显示,同时保持统一的应用入口。实施时需注意:适配方案与原始应用共享版本管理;需设置"默认界面层";多角色用户通过优先级机制确定显示方案;界面隐藏不等于权限控制,数据安全仍需后端保障。该方案能有效解决跨岗位的界面适配

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 147

IDEA上运行Flink任务

将最简单的flink任务在IDEA上开发和运行,为后面的深入学习和实践打好基础。

程序员欣宸的博客 1万+

Python 爬虫进阶技巧:新手必学的反爬突破与效率优化

本文系统总结了爬虫进阶的核心技巧,针对新手常见的反爬拦截、效率低下、动态页面解析等痛点问题,提出了可落地的解决方案。主要内容包括:通过随机UA池、代理IP池和Cookie池突破常见反爬机制;利用多线程/异步请求提升爬取效率;使用Selenium解析动态渲染页面;以及数据清洗方法提升数据质量。文中提供了完整的代码示例和实战对比数据,并强调爬虫开发应遵守合规性要求。这些技巧能帮助开发者快速提升爬虫实战能力,应对80%以上的常见爬取需求。

2503_91057718的博客 1436

Apache Flink源码调试终极指南:IntelliJ IDEA快速配置教程

想要深入了解Apache Flink这个强大的流批一体化数据处理引擎吗?通过源码调试,你不仅能掌握其核心工作原理,还能快速定位和解决复杂问题。本文为你提供完整的Apache Flink源码调试环境搭建指南,让你在IntelliJ IDEA中轻松调试Flink源码。🚀 Apache Flink作为业界领先的流处理框架,支持实时数据流处理和批量数据处理,拥有高性能、低延迟的特点。通过源码调试,你可

gitblog_00703的博客 772

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Flink IDEA项目创建

1 创建maven项目 创建完成后,项目结构如下图所示: 2 添加最低限度的API依赖 开发Flink程序需要最低限度的API依赖,最低的依赖库包括flink-scala,flink-Streaming-scala。大多数应用需要依赖其他类库或连接器,例如kafka连接器,TableAPI,CEP库等,这些不是Flink核心依赖库的一部分,因此必须作为依赖项手动添加到应用程序中。 打开Flink官网中的,复制最低依赖项: https://ci.apache.org/projects/flink/fl

张之海的博客 1483

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

(AI总结版)从零搭建 Flink 开发环境:WSL2 + IDEA + Maven 完全指南(跑通一个 word count 应用程序)WSL2 中下载安装 Flink(Web UI)

本文以IntelliJ IDEA 2026.1.3 + WSL2 + Maven搭建Flink 1.15.4开发环境,详细演示从环境检测、Maven安装、Java版本切换(Java8/11共存)、Flink本地集群部署到IDEA创建项目、配置pom.xml及运行WordCount示例的全流程。

木木的学习笔记 287

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

idea开发flink程序在windows上运行

flink程序使用java和scala语言都可以开发,java使用的人多,下面就用实现在idea上开发java的flink程序。 1.下载flink运行程序 flink-1.9.0-bin-scala_2.12.tgz 下载地址: 1)https://download.youkuaiyun.com/download/water17ball/14975857 2)https://www.apache.org/dyn/closer.lua/flink/flink-1.9.0/flink-1.9.0-bin-.

water17ball的专栏 3317

Flink安装与编程实践(Flink1.9.1)

该程序依赖Flink Java API,因此,我们需要通过Maven进行编译打包。Flink的运行需要Java环境的支持,因此,在安装Flink之前,请先参照相关资料安装Java环境(比如Java8)。如下图所示,编译打包成功以后,可以看到生成的FlinkWordCount.jar文件。Flink对于本地模式是开箱即用的,如果要修改Java运行环境,可以修改。代码文件,在这个代码文件的代码区域,鼠标右键单击,弹出菜单中选中。最后,到Flink中运行FlinkWordCount.jar。

不能将运气当成战略! 2979

Flink 1.17.0 入门避坑指南:IntelliJ IDEA + Maven 环境下的第一个流处理项目

本文是一份针对初学者的Flink 1.17.0实战教程,详细指导如何在IntelliJ IDEA和Maven环境下构建第一个流处理项目。内容涵盖环境配置、依赖管理、核心API使用及常见问题排查,旨在帮助开发者快速上手Flink,避开入门阶段的典型陷阱,顺利完成从项目创建到程序运行的完整流程。

gin88的博客 198

Flink初级编程实践(使用macOS上的IDEA远程调试服务器)——大数据基础编程实验之八

Flink初级编程实践——大数据基础编程实验之八 一、实验目的 (1)通过实验掌握基本的Flink编程方法。 (2)掌握用IntelliJ IDEA工具编写Flink程序的方法。 二、实验平台 (1)服务器 Ubuntu 16.04。 (2)个人电脑 macOS 10.15.6。 (3)IntelliJ IDEA 2021.2.2。 (4)Flink 1.9.1。 三、实验步骤 1.使用IntelliJ IDEA工具开发WordCount程序 在个人电脑macOS系统中安装IntelliJ IDEA,然后使

weixin_44616879的博客 6983

在Mac上使用idea搭建flink java开发环境

1.环境 本文档记录的是使用flink的java API简单地创建应用的过程。 前置条件:需要安装Java、maven和flink。 1.1 Java环境变量 Java需要jdk、path、classpath等环境变量,这里使用Mac下自带的jdk,配置如下: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/C...

sym的博客 2773
上一篇: Redis实战指南:从单机到分布式架构的演进
下一篇: LauterBach调试器入门指南:从硬件连接到软件调试全流程
Light
博客等级 码龄27年 39粉丝 1340原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值