Flink实战(三) - 编程范式及核心概念(一)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink实战(三) - 编程范式及核心概念(一)

1.png1 基本的 API 概念

Flink程序是实现分布式集合转换的常规程序(例如,过滤,映射,更新状态,加入,分组,定义窗口,聚合)。最初从源创建集合(例如,通过从文件,kafka主题或从本地的内存集合中读取)。结果通过接收器返回,接收器可以例如将数据写入(分布式)文件或标准输出(例如,命令行终端)。 Flink程序可以在各种环境中运行,独立运行或嵌入其他程序中。执行可以在本地JVM中执行,也可以在许多计算机的集群上执行。


根据数据源的类型,即有界或无界源,您可以编写批处理程序或流程序,其中


  • DataSet API用于批处理
  • DataStream API用于流式处理。

注意:在显示如何使用API的实际示例时,我们将使用StreamingExecutionEnvironment和DataStream API。 DataSet API中的概念完全相同,只需用ExecutionEnvironment和DataSet替换即可。


大数据的处理流程

image.png

2 DataSet & DataStream

Flink具有特殊类DataSet和DataStream来表示程序中的数据。 可以将它们视为可以包含重复项的不可变数据集合。

  • 在DataSet的情况下,数据是有限的
  • 而对于DataStream,元素的数量可以是无限的


这些集合在某些关键方面与常规Java集合不同。 首先,它们是不可变的,这意味着一旦创建它们,就无法添加或删除元素。 也不能简单地检查里面的元素

最初通过在Flink程序中添加源来创建集合,并通过使用诸如map,filter等API方法对它们进行转换来从这些集合中派生新集合。

image.png

image.png

可以看出底层使用了数据源

3 Flink 项目流程剖析

Flink程序看起来像是转换数据集合的常规程序。 每个程序包含相同的基本部分:

  • 获得执行环境,
  • 加载/创建初始数据,
  • 指定此数据的转换,
  • 指定放置计算结果的位置,
  • 触发程序执行

Scala版本

我们现在将概述每个步骤

Scala DataSet API的所有核心类都可以在org.apache.flink.api.scala包中找到

而Scala DataStream API的类可以在org.apache.flink.streaming.api.scala中找到


StreamExecutionEnvironment是所有Flink程序的基础

可以在StreamExecutionEnvironment上使用这些静态方法获取一个:

1:getExecutionEnvironment()
2:createLocalEnvironment()
3:createRemoteEnvironment(host: String, port: Int, jarFiles: String*)

法1示例代码

image.png

法2示例代码

image.png

此方法将环境的默认并行度设置为给定参数,默认为通过[[setDefaultLocalParallelism(Int)]]设置的值。

image.png

通常,只需要使用getExecutionEnvironment(),因为这将根据上下文执行正确的操作:

  • 如果在IDE中执行程序或作为常规Java程序,它将创建一个本地环境,将执行在本地机器上的程序。
  • 如果从程序中创建了一个JAR文件,并通过命令行调用它,则Flink集群管理器将执行您的main方法,getExecutionEnvironment()将返回一个执行环境,用于在集群上执行程序。


对于指定数据源,执行环境可以通过各种途径从文件中读取

  • 逐行读取它们
  • CSV文件
  • 使用完全自定义数据输入格式


要将文本文件作为一系列行读取,可以使用:

val env = StreamExecutionEnvironment.getExecutionEnvironment()
val text: DataStream[String] = env.readTextFile("file:///path/to/file")

这将提供一个DataStream,然后就可以在其上应用转换来创建新的派生DataStream

也可以通过使用转换函数调用DataSet上的方法来应用转换。 例如,map转换如下所示:

val input: DataSet[String] = ...
val mapped = input.map { x => x.toInt }

这将通过将原始集合中的每个String转换为Integer来创建新的DataStream

一旦有了包含最终结果的DataStream,就可以通过创建接收器将其写入外部系统。 这些只是创建接收器的一些示例方法:

writeAsText(path: String)
print()

一旦指定了完整的程序,就需要通过调用StreamExecutionEnvironment上的execute()触发程序执行

根据ExecutionEnvironment的类型,将在本地计算机上触发执行或提交程序以在集群上执行。


execute()方法返回一个JobExecutionResult,它包含执行时间和累加器结果。

1.png

触发程序执行。环境将执行导致"sink"操作运作程序的所有部分

Sink操作例如是打印结果或将它们转发到消息队列。

该法将记录程序执行并使用提供的名称显示。

image.png



相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
打赏
0
0
0
0
1951
分享
相关文章
Flink DataSet API迁移到DataStream API实战
本文介绍了作者的Flink项目从DataSet API迁移到DataStream API的背景、方法和遇到的问题以及解决方案。
266 3
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developer.aliyun.com/live/255088](https://developer.aliyun.com/live/255088)
232 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
498 2
ClickHouse与大数据生态集成:Spark & Flink 实战
探索Flink动态CEP:杭州银行的实战案例
探索Flink动态CEP:杭州银行的实战案例
100 5
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试
382 0
探索Flink动态CEP:杭州银行的实战案例
本文由杭州银行大数据工程师唐占峰、欧阳武林撰写,介绍Flink动态CEP的定义、应用场景、技术实现及使用方式。Flink动态CEP是基于Flink的复杂事件处理库,支持在不重启服务的情况下动态更新规则,适应快速变化的业务需求。文章详细阐述了其在反洗钱、反欺诈和实时营销等金融领域的应用,并展示了某金融机构的实际应用案例。通过动态CEP,用户可以实时调整规则,提高系统的灵活性和响应速度,降低维护成本。文中还提供了具体的代码示例和技术细节,帮助读者理解和使用Flink动态CEP。
943 2
探索Flink动态CEP:杭州银行的实战案例
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
510 0
揭秘!Flink如何从默默无闻到大数据界的璀璨明星?起源、设计理念与实战秘籍大公开!
【8月更文挑战第24天】Apache Flink是一款源自Stratosphere项目的开源流处理框架,由柏林理工大学等机构于2010至2014年间开发,并于2014年捐赠给Apache软件基金会。Flink设计之初即聚焦于提供统一的数据处理模型,支持事件时间处理、精确一次状态一致性等特性,实现了流批一体化处理。其核心优势包括高吞吐量、低延迟及强大的容错机制。
164 1
|
11月前
|
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
238 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问