Flink 快速上手
Apache Flink 是一个开源的流处理框架,它提供了高效、可扩展、分布式的数据处理能力。本文将介绍如何快速上手 Flink。
安装
Flink 可以在官网上下载二进制包,也可以通过 Maven 或 Gradle 进行依赖引入。这里我们介绍如何下载二进制包并进行安装。
-
下载 Flink
在 Flink 的官网上下载二进制包,下载地址为:https://flink.apache.org/downloads.html
-
解压缩
将下载的二进制包解压缩到本地目录。
tar -xzf flink-1.13.2-bin-scala_2.12.tgz
-
启动 Flink
进入解压缩后的目录,执行以下命令启动 Flink:
./bin/start-cluster.sh
启动成功后,可以通过访问 http://localhost:8081 访问 Flink 的 Web 界面。
编写 Flink 程序
Flink 提供了 Java 和 Scala 两种编程语言的 API,这里我们以 Java 为例介绍如何编写 Flink 程序。
-
创建 Maven 项目
在命令行中执行以下命令创建 Maven 项目:
mvn archetype:generate \ -DarchetypeGroupId=org.apache.flink \ -DarchetypeArtifactId=flink-quickstart-java \ -DarchetypeVersion=1.13.2 \ -DgroupId=com.example \ -DartifactId=flink-demo \ -Dversion=1.0 \ -Dpackage=com.example.flinkdemo
执行完毕后,会在当前目录下创建一个名为 flink-demo 的 Maven 项目。
-
编写 Flink 程序
在 flink-demo 项目中,打开 src/main/java/com/example/flinkdemo/StreamingJob.java 文件,编写 Flink 程序。
package com.example.flinkdemo; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; public class StreamingJob { public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> text = env.socketTextStream("localhost", 9999); DataStream<Integer> counts = text.flatMap(new FlatMapFunction<String, String>() { @Override public void flatMap(String value, Collector<String> out) { for (String word : value.split("\\s")) { out.collect(word); } } }) .map(new MapFunction<String, Tuple2<String, Integer>>() { @Override public Tuple2<String, Integer> map(String value) { return new Tuple2<>(value, 1); } }) .keyBy(0) .sum(1); counts.print(); env.execute("Streaming WordCount"); } }
该程序实现了一个简单的流式 WordCount,它从本地的 9999 端口读取数据,对每个单词进行计数,并将结果打印出来。
-
运行 Flink 程序
在命令行中执行以下命令运行 Flink 程序:
mvn clean package ./bin/flink run target/flink-demo-1.0.jar
运行成功后,可以在 Flink 的 Web 界面上查看任务的运行状态和结果。
总结
本文介绍了如何快速上手 Flink,包括安装、编写 Flink 程序和运行 Flink 程序。Flink 是一个功能强大的流处理框架,可以应用于各种数据处理场景。