0


flink入门案例

Apache Flink 是一个开源的流处理框架,专门用于大规模的数据流处理和实时分析。Flask 提供了低延迟、高吞吐量的流处理能力,能够处理来自不同数据源的大量数据。

以下是一个简单的 Apache Flink 入门案例,展示如何使用 Flink 进行基本的流处理任务。我们将通过一个简单的例子来说明如何设置 Flink 环境,编写一个 Flink 程序,以及如何运行它。

环境准备

  1. 安装 Flink

    你可以从 Apache Flink 官方网站 下载最新版本的 Flink。下载后,解压缩到你选择的目录,并设置 FLINK_HOME 环境变量指向该目录。

  2. 安装 Java

    Flink 需要 Java 8 或 Java 11。你可以从 Oracle 官方网站OpenJDK 安装 Java。安装后,确保设置 JAVA_HOME 环境变量。

  3. 安装 Maven

    Maven 用于构建 Java 项目。你可以从 Apache Maven 官方网站 下载并安装 Maven。安装后,确保设置 MAVEN_HOME 环境变量。

创建 Flink 项目

  1. 创建 Maven 项目

    使用 Maven 创建一个新的 Flink 项目。可以使用以下 Maven 命令创建一个新的项目:

   mvn archetype:generate -DgroupId=com.example -DartifactId=flink-example -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  1. 添加 Flink 依赖

    编辑 pom.xml 文件,添加 Flink 的依赖项。以下是一个示例配置:

 <dependencies>
       <!-- Apache Flink dependencies -->
       <dependency>
           <groupId>org.apache.flink</groupId>
           <artifactId>flink-java</artifactId>
           <version>1.16.0</version>
       </dependency>
       <dependency>
           <groupId>org.apache.flink</groupId>
           <artifactId>flink-streaming-java_2.12</artifactId>
           <version>1.16.0</version>
       </dependency>
       <dependency>
           <groupId>org.apache.flink</groupId>
           <artifactId>flink-clients-java</artifactId>
           <version>1.16.0</version>
       </dependency>
   </dependencies>

编写 Flink 程序

src/main/java/com/example 目录下创建一个新的 Java 文件,例如 FlinkWordCount.java。以下是一个简单的 Flink WordCount 示例程序:

package com.example;

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;

public class FlinkWordCount {
    public static void main(String[] args) throws Exception {
        // 创建 Flink 流执行环境
        final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        // 从标准输入读取数据流
        DataStream<String> text = env.readTextFile("path/to/your/input.txt");

        // 解析每一行数据,提取单词并计数
        DataStream<Tuple2<String, Integer>> counts = text
            .flatMap(new Tokenizer())
            .keyBy(0)
            .sum(1);

        // 打印结果到控制台
        counts.print();

        // 执行 Flink 程序
        env.execute("Flink WordCount Example");
    }

    public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
        @Override
        public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
            // 将行分割为单词
            String[] words = value.toLowerCase().split("\\W+");
            // 产生 (word, 1) 元组
            for (String word : words) {
                if (word.length() > 0) {
                    out.collect(new Tuple2<>(word, 1));
                }
            }
        }
    }
}

构建和运行 Flink 程序

  1. 构建项目

    在项目根目录下运行以下 Maven 命令来构建项目:

   mvn clean package

这将生成一个包含所有依赖项的 JAR 文件,通常位于 target 目录下。

  1. 运行 Flink 程序

    启动 Flink 集群(可以是本地模式或集群模式)。在 Flink 安装目录下,运行以下命令来启动本地 Flink 集群:

   ./bin/start-cluster.sh

然后,将生成的 JAR 文件提交到 Flink 集群中:

   ./bin/flink run -c com.example.FlinkWordCount target/flink-example-1.0-SNAPSHOT.jar

注意:-c 参数指定了程序的主类(即包含 main 方法的类),而 target/flink-example-1.0-SNAPSHOT.jar 是你构建的 JAR 文件。

小结

这个简单的 Flink 入门案例演示了如何创建一个 Flink 流处理程序,读取数据,进行基本的转换和聚合,并将结果输出到控制台。你可以根据需要扩展这个示例,添加更多复杂的处理逻辑、使用不同的数据源和接收器,或将程序部署到更复杂的 Flink 集群环境中。

标签: flink 大数据

本文转载自: https://blog.csdn.net/weixin_34278711/article/details/141627098
版权归原作者 weixin_34278711 所有, 如有侵权,请联系我们删除。

“flink入门案例”的评论:

还没有评论