文章目录

  • 一.简介
  • 二.基本概念
    • 1.Pipelines
    • 2.PCollection
    • 3.Transforms
    • 4.ParDo
    • 5.Pipeline I/O
    • 6.Aggregation
    • 7.User-defined functions (UDFs)
    • 8.Runner
  • 三.高级概念
    • 1.Event time
    • 2.Windowing
    • 3.Watermarks
    • 4.Trigger
  • 四.工作原理

一.简介

Apache Beam 是一个开放源码的统一模型,用于定义批处理和流数据并行处理管道。Apache Beam 编程模型简化了大规模数据处理的机制,使用一个开源的 Beam sdk,你可以构建一个定义管道的程序,然后由 Beam 支持的分布式处理后端执行管道,这些后端包括 Apache Flink、 Apache Spark 和 Google Cloud Dataflow。

Apache Beam 模型可提供有用的抽象,这些抽象使你无需去操心分布式处理的低层细节,例如协调各个工作器、分片数据集和其他此类任务,Dataflow 可全面管理这些低层细节,使你以专注于对数据处理作业进行逻辑组合,而不是对并行处理进行物理编排。你可以专注于你需要作业执行的任务,而不是执行作业的方式。

Beam 对于令人尴尬的并行数据处理任务特别有用,在这些任务中,问题可以被分解成许多较小的数据束,这些数据束可以独立地并行处理。你还可以使用 Beam 进行提取、转换和加载(ETL)任务和纯数据集成。这些任务对于在不同的存储介质和数据源之间移动数据、将数据转换为更理想的格式或将数据加载到新系统都很有用。

二.基本概念

1.Pipelines

管道封装了涉及读取输入数据、转换数据和写入输出数据的整个一系列计算。输入源和输出接收器可以是相同的,也可以是不同类型的,这允许您将数据从一种格式转换为另一种格式。Apache Beam程序首先构造一个Pipeline对象,然后使用该对象作为创建管道数据集的基础。每个管道代表一个单独的、可重复的作业。

2.PCollection

PCollection表示一个潜在的分布式、多元素数据集,它充当管道的数据。Apache Beam转换使用PCollection对象作为管道中每个步骤的输入和输出。PCollection可以保存固定大小的数据集,也可以保存来自不断更新的数据源的无界数据集。

3.Transforms

转换表示转换数据的处理操作。转换接受一个或多个PCollections作为输入,执行您对该集合中的每个元素指定的操作,并生成一个或多个PCollections作为输出。转换可以执行几乎任何类型的处理操作,包括对数据执行数学计算、将数据从一种格式转换为另一种格式、将数据分组、读取和写入数据、过滤数据以只输出所需的元素,或将数据元素组合成单个值。

4.ParDo

ParDo是Apache Beam sdk中的核心并行处理操作,它对输入PCollection的每个元素调用用户指定的函数。ParDo将零个或多个输出元素收集到一个输出PCollection中。ParDo可以独立地(可能是并行地)转换流程元素。

5.Pipeline I/O

Apache Beam I/O连接器允许您将数据读取到管道中,并将输出数据从管道中写入。一个I/O连接器由一个源和一个接收器组成。所有Apache Beam源和接收都是转换,它们让您的管道处理来自几种不同数据存储格式的数据。您还可以编写自定义I/O连接器。

6.Aggregation

聚合是从多个输入元素计算某个值的过程。Apache Beam中用于聚合的主要计算模式是用一个公共键和窗口对所有元素进行分组。然后,它使用结合和交换运算组合每一组元素。

7.User-defined functions (UDFs)

Apache Beam中的一些操作允许执行用户定义的代码,作为配置转换的一种方式。对于ParDo,用户定义的代码指定了应用于每个元素的操作,对于Combine,它指定了应该如何组合值。管道可能包含用不同于运行程序语言的语言编写的udf。管道还可能包含用多种语言编写的udf。

8.Runner

Runners是接受管道并执行它的软件。大多数Runners都是大规模并行大数据处理系统的翻译或适配器。其他运行器用于本地测试和调试。

三.高级概念

1.Event time

数据事件发生的时间,由数据元素本身上的时间戳确定。这与在管道中的任何阶段处理实际数据元素的时间形成对比。

2.Windowing

窗口可以根据单个元素的时间戳将集合划分为有限集合的窗口,从而对无界集合进行分组操作。窗口函数告诉运行程序如何将元素分配给初始窗口,以及如何合并分组元素的窗口。Apache Beam允许您定义不同种类的窗口或使用预定义的窗口函数。

3.Watermarks

Apache Beam跟踪一个水印,这是系统的概念,即某个窗口中的所有数据何时能够到达管道。Apache Beam跟踪水印是因为数据不能保证按时间顺序或可预测的间隔到达管道中。此外,也不能保证数据事件将以与生成数据事件相同的顺序出现在管道中。

4.Trigger

触发器决定数据到达时何时发出聚合结果。对于有界数据,结果是在处理完所有输入之后发出的。对于无界数据,当水印通过窗口的末端时将发出结果,这表明系统认为该窗口的所有输入数据都已被处理。Apache Beam提供了几个预定义的触发器,并允许您组合它们。

四.工作原理

1.创建一个Pipeline对象并设置管道执行选项,包括Pipeline Runner。

2.为管道数据创建一个初始的PCollection,可以使用IOs从外部存储系统读取数据,也可以使用Create转换从内存中的数据构建PCollection。

3.对每个PCollection应用PTransforms。转换可以更改、筛选、分组、分析或以其他方式处理PCollection中的元素。转换创建一个新的输出PCollection而不修改输入集合。典型的管道依次对每个新的输出PCollection应用后续转换,直到处理完成。但是,请注意,管道并不一定是一个接一个应用的转换的直线:将PCollections看作变量,而将PTransforms看作应用于这些变量的函数:管道的形状可以是任意复杂的处理图。

4.使用IOs编写最终的,转换的PCollection(s)到外部源。

5.使用指定的管道运行器运行管道。

当你运行你的Beam驱动程序时,你指定的Pipeline Runner会基于你创建的PCollection对象和你应用的转换构造你的管道的工作流图。然后使用适当的分布式处理后端执行该图,成为该后端上的异步“作业”(或等效)。

Apache Beam简介及相关概念相关推荐

  1. Apache Beam -- 简介

    概述 在大数据的浪潮之下,技术的更新迭代十分频繁.受技术开源的影响,大数据开发者提供了十分丰富的工具.但也因为如此,增加了开发者选择合适工具的难度.在大数据处理一些问题的时候,往往使用的技术是多样化的 ...

  2. Apache Beam记录

    官网:https://beam.apache.org/ github:https://github.com/apache/beam Try Apache Beam:https://beam.apach ...

  3. Apache Beam的架构概览

    不多说,直接上干货! Apache Beam是一个开源的数据处理编程库,由Google贡献给Apache的项目,前不久刚刚成为Apache TLP项目.它提供了一个高级的.统一的编程模型,允许我们通过 ...

  4. Apache Beam 是什么,它为什么比其他选择更受欢迎?

    1. 概述 在本教程中,我们将介绍 Apache Beam 并探讨其基本概念.我们将首先演示使用 Apache Beam 的用例和好处,然后介绍基本概念和术语.之后,我们将通过一个简单的例子来说明 A ...

  5. Apache Mahout 简介

    Apache Mahout 简介 通过可伸缩.商业友好的机器学习来构建智能应用程序 当研究院和企业能获取足够的专项研究预算之后,能从数据和用户输入中学习的智能应用程序将变得更加常见.人们对机器学习技巧 ...

  6. Apache Beam欲通过uber api获取大数据

    现在,有用的Apache大数据项目似乎每日更新.相比于每次都重新学习的方式,如果可以通过一个统一的API如何呢? 长期开玩笑说Hadoop生态系统是那种如果你不喜欢一个为特定系统的API,等待五分钟, ...

  7. Apache Beam发布第一个稳定版本

    Apache Beam在官方博客上正式发布了Beam 2.0.0.这是Beam有史以来的第一个稳定版本,根据Beam社区的声明,Beam意欲为未来版本发布保持API的稳定性,并让Beam适用于企业的部 ...

  8. Apache Beam是什么?

    Apache Beam 的前世今生 1月10日,Apache软件基金会宣布,Apache Beam成功孵化,成为该基金会的一个新的顶级项目,基于Apache V2许可证开源. 2003年,谷歌发布了著 ...

  9. Apache Beam的API设计

    Apache Beam的API设计 Apache Beam还在开发之中,后续对应的API设计可能会有所变化,不过从当前版本来看,基于对数据处理领域对象的抽象,API的设计风格大量使用泛型来定义,具有很 ...

最新文章

  1. JSP页面空指针异常调错办法之weblogic
  2. 如何用php获取网页表格,PHP获取网页上任意表格中内容的通用程序的制作
  3. 孙鑫MFC笔记之十四--多线程同步与异步套接字编程
  4. Visual.Assist.X.V10.7.1949的汉化破解补丁
  5. 要闻君说:谷歌云重磅发布两大技术平台;以后可以打飞滴了?SAP重组动荡;微软宣布 Azure Functions 支持 Java...
  6. 在lighttpd上使用fastcgi方式部署hg server
  7. ReportViewer教程(15)-矩阵报表-4
  8. android系统(100)---如何减少lowmemory的发生几率
  9. nodejs异常处理
  10. python高阶_Python高阶学习
  11. 区块链浏览器_YOYOW正式发布更新版本区块链浏览器
  12. python open r w r+ w+ a的区别
  13. 探讨 .NET 语言的 using statement 与资源释放
  14. JAVA微信小程序论坛系统毕业设计 开题报告
  15. Unity首次运行下载游戏资源
  16. 全国每年的考证时间大全
  17. 【nginx】安装及防火墙配置
  18. 【Android】自定义倒计时弹框(Handler/Timer/RxJava/持续更新)
  19. namecheap注册域名优惠码
  20. CES 2023:华硕轻薄本创新形态+硬核配置引领新创作时代

热门文章

  1. Codeforces Round #277
  2. 无聊的生活,无聊的世界
  3. NAS如何搭建Plex影音中心?
  4. 【爬虫实践】用递归获取网站的所有内链和外链
  5. 使用CSDN—MarkDown编辑数学公式
  6. chosen-select multiple 下拉框多选,赋值
  7. 数字孪生世界白皮书(2022) 附下载
  8. HTML - html之间传值并接收
  9. 用c++编写简单的加减乘除
  10. 2014一个萝卜一个“坑”