Flink简介及小案例

news/2024/10/19 0:51:35/

Apache Flink 是一个用于分布式数据流处理的框架,常用于实时大数据处理和批处理。Flink 的操作可以分为两个方面:安装配置编写任务代码。下面对这两块做一下简单的介绍。

1. 安装和配置 Flink

(1) 下载并安装 Flink

从 Apache Flink 的官网上下载对应的二进制包 Flink 下载页面。

# 使用wget下载
wget https://downloads.apache.org/flink/flink-1.14.4/flink-1.14.4-bin-scala_2.12.tgz# 解压
tar -xzf flink-1.14.4-bin-scala_2.12.tgz
cd flink-1.14.4
(2) 配置 Flink
  • 配置文件路径:conf/flink-conf.yaml
  • 可修改的参数:
    • jobmanager.rpc.address: 设置为 JobManager 的主机名或 IP 地址。
    • taskmanager.numberOfTaskSlots: 每个 TaskManager 可以配置的 slot 数量。
(3) 启动 Flink 集群

Flink 可以本地运行,也可以运行在分布式集群上。下面展示在本地启动 Flink 的命令:

# 启动 Flink 集群
./bin/start-cluster.sh

启动后可以通过浏览器访问 localhost:8081 来查看 Flink Web UI,查看作业状态和集群信息。

2. 编写 Flink 任务代码

Flink 任务主要分为两类:DataStream API(用于流处理)和 DataSet API(用于批处理)。这里我们主要介绍流处理。

(1) 设置开发环境

通常我们使用 Java 或 Scala 编写 Flink 应用。在 Maven 项目中,可以通过添加以下依赖来集成 Flink:

<dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.12</artifactId><version>1.14.4</version>
</dependency>
(2) 示例代码

一个简单的流处理任务的 Java 代码如下:

import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;public class FlinkExample {public static void main(String[] args) throws Exception {// 创建执行环境final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// 生成数据源DataStream<String> text = env.fromElements("hello", "world", "flink", "streaming");// 进行简单的转换操作,如 mapDataStream<String> upperCaseStream = text.map(String::toUpperCase);// 打印结果到控制台upperCaseStream.print();// 启动程序env.execute("Flink Streaming Example");}
}
(3) 提交任务

当任务编写完成后,可以通过以下命令将任务提交到 Flink 集群:

# 提交任务到 Flink 集群
./bin/flink run -c <MainClass> <JAR文件路径>

例如:

./bin/flink run -c com.example.FlinkExample /path/to/flink-example.jar

3. 常用操作

Flink 提供了很多常用操作用于流数据处理:

  • map(): 对流中的每个元素应用一个函数。
  • filter(): 过滤掉不符合条件的元素。
  • keyBy(): 基于某个字段对流进行分组。
  • window(): 对流数据进行窗口化处理(如基于时间窗口或数量窗口)。
  • reduce(): 聚合操作,对窗口中的数据进行累积处理。

这些操作组合起来可以实现复杂的实时数据处理逻辑。

总结

Flink 的操作主要包括集群的搭建与配置,以及通过 API 编写数据处理任务。安装和启动相对简单,而任务的实现可以根据需求组合不同的算子来实现复杂的处理逻辑。如果你有具体的任务需求或想了解某些细节,我可以为你提供更详细的帮助。


http://www.ppmy.cn/news/1540137.html

相关文章

【开发语言】快来看看不同编程语言输出语句,感受一下编程多样性的魅力吧 !!

编程语言的多样性是编程世界的一个迷人之处。每种语言都设计有其独特的语法、特性和用途&#xff0c;以适应不同的开发需求、平台和环境。你提到的这些输出语句&#xff08;或函数&#xff09;&#xff0c;尽管它们的功能相似——即在控制台或终端中显示文本——但它们各自代表…

Vulnhub打靶-The Plants:Earth

基本信息 靶机下载&#xff1a;https://download.vulnhub.com/theplanets/Earth.ova 攻击机器&#xff1a;192.168.20.128&#xff08;Windows操作系统&#xff09; 靶机&#xff1a;192.168.20.0/24 目标&#xff1a;获取2个flagroot权限 基本步骤 信息收集 我们将靶机…

YOLOV11改进系列指南

基于Ultralytics的YOLO11改进项目.(69.9) 目前自带的一些改进方案(持续更新) 为了感谢各位对本项目的支持,本项目的赠品是yolov5-PAGCP通道剪枝算法.具体使用教程 专栏改进汇总 YOLO11系列 二次创新系列 ultralytics/cfg/models/11/yolo11-RevCol.yaml 使用(ICLR2023)Reve…

xtu oj 原根

文章目录 回顾杂思路c 语言代码 回顾 AB III问题 H: 三角数问题 G: 3个数等式 数组下标查询&#xff0c;降低时间复杂度1405 问题 E: 世界杯xtu 数码串xtu oj 神经网络xtu oj 1167 逆序数&#xff08;大数据&#xff09; 杂 有一些题可能是往年的程设的题&#xff0c;现在搬到…

解读大数据治理:数据管理的新纪元

解读大数据治理&#xff1a;数据管理的新纪元 在数字化时代&#xff0c;企业和组织生成的数据量呈指数级增长。虽然大数据为业务洞察和决策制定提供了强大的支持&#xff0c;但若不加以有效管理&#xff0c;数据混乱可能导致信息失真的问题。因此&#xff0c;大数据治理应运而…

vue3集成electron

安装说明 vue集成electron时&#xff0c;会用到两个依赖。分别是electron和electron-builder&#xff0c;前者是开发环境下使用&#xff0c;后者是打包部署时使用。安装时&#xff0c;可在线安装也可离线安装。所谓离线安装就是自己下载好用到的包&#xff0c;然后放到指定目录…

JSON字符串转成java的Map对象

要将这个JSON字符串转换成Java对象&#xff0c;你可以定义一个Element类来表示每个要素&#xff0c;然后使用一个Map来存储这些要素。以下是具体的实现步骤&#xff1a; 步骤 1: 定义 Element 类 首先&#xff0c;定义一个Element类来表示每个要素的结构&#xff1a; public…

Maven项目打包为jar的几种方式

1.直接打包 通过不打依赖包的方式&#xff0c;仅仅只是打包出项目中的代码到JAR包中。在POM文件合适的位置添加如下plugin即可&#xff0c;随后执行maven install <plugin> <groupId>org.apache.maven.plugins</groupId> &l…