flink入门案例

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

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

环境准备

1. 安装 Flink

   你可以从 [Apache Flink 官方网站](https://flink.apache.org/downloads.html) 下载最新版本的 Flink。下载后,解压缩到你选择的目录,并设置 `FLINK_HOME` 环境变量指向该目录。

2. 安装 Java

   Flink 需要 Java 8 或 Java 11。你可以从 [Oracle 官方网站](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) 或 [OpenJDK](https://openjdk.java.net/install/) 安装 Java。安装后,确保设置 `JAVA_HOME` 环境变量。

3. 安装 Maven

   Maven 用于构建 Java 项目。你可以从 [Apache Maven 官方网站](https://maven.apache.org/download.cgi) 下载并安装 Maven。安装后,确保设置 `MAVEN_HOME` 环境变量。

创建 Flink 项目

1. 创建 Maven 项目

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

   mvn archetype:generate -DgroupId=com.example -DartifactId=flink-example -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


 

2. 添加 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` 目录下。

2. 运行 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 集群环境中。

  • 24
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值