返回

Flink WordCount 快速入门指南:告别数据处理难点,轻松迈入大数据处理世界

后端

今天,我们将踏上 Flink 入门之旅的第一步——WordCount。WordCount 是一个经典的入门程序,它可以帮助我们快速熟悉 Flink 的基本输入输出和编程代码。后续章节中,我们将深入探讨 Flink 的各种概念和架构。

1. 创建项目

首先,我们先创建一个项目。打开你喜欢的 IDE,新建一个项目,取名为 "FlinkWordCount"。

2. 添加依赖

接下来,我们需要添加 Flink 的依赖。我们使用 Maven 来管理依赖,因此我们需要在项目中添加以下依赖:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>1.15.4</version>
</dependency>

3. 编写代码

现在,让我们编写 WordCount 的代码。创建一个名为 "WordCount.java" 的类,并输入以下代码:

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.AggregateOperator;
import org.apache.flink.api.java.operators.DataSource;
import org.apache.flink.util.Collector;

public class WordCount {

    public static void main(String[] args) throws Exception {
        // 创建执行环境
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        // 创建数据源
        DataSource<String> text = env.fromElements("Hello world", "Hello Flink", "Hello Java");

        // 使用 flatMap 算子将句子拆分为单词
        DataSet<String> words = text.flatMap(new FlatMapFunction<String, String>() {
            @Override
            public void flatMap(String value, Collector<String> out) {
                for (String word : value.split(" ")) {
                    out.collect(word);
                }
            }
        });

        // 使用 groupBy 算子将单词分组
        DataSet<String> groupedWords = words.groupBy(0);

        // 使用 reduce 算子对每个单词进行计数
        AggregateOperator<String, Integer> wordCounts = groupedWords.reduce((a, b) -> a + " " + b);

        // 打印结果
        wordCounts.print();
    }
}

4. 运行程序

现在,我们可以运行我们的程序了。在命令行中,切换到项目目录并输入以下命令:

mvn clean package
java -jar target/FlinkWordCount-1.0-SNAPSHOT.jar

5. 查看结果

运行程序后,你应该会看到以下输出:

Hello 1
Flink 1
Java 1
world 1

恭喜你,你已经成功运行了 Flink 的第一个程序!

总结

Flink 是一个强大的流处理框架,它可以帮助我们轻松地处理实时数据。在本文中,我们介绍了 Flink 的基本概念和使用方法。如果你想了解更多关于 Flink 的内容,可以查阅官方文档或参加相关培训课程。

希望这篇文章对您有所帮助!