当前位置: 首页 > news >正文

Java ETL - Apache Beam 简介

基本介绍

Apache Beam是一个用于大数据处理的开源统一编程模型。它允许用户编写一次代码,然后在多个批处理和流处理引擎上运行,如Apache Flink、Apache Spark和Google Cloud Dataflow等。Apache Beam提供了一种简单且高效的方式来实现数据处理管道,支持复杂的数据流转换和并行处理。通过Apache Beam,用户可以编写可移植且具有弹性的数据处理应用程序,从而更轻松地处理大规模数据集并实现高性能的数据处理。

Apache Beam最初是由Google开发的。Google在内部使用类似的编程模型来处理大规模数据,并且在2016年将这个模型开源,成为Apache软件基金会的顶级项目,即Apache Beam。虽然Google是Apache Beam的最初贡献者之一,但现在这个项目已经得到了全球范围内的开发者和组织的贡献和支持,成为一个广泛采用的大数据处理框架。



SDK 和 Runner

其实Apache beam 只是1个SDK, 它支持在多个Runner 上部署和运行

也就是一次编写, 多个平台运行
在这里插入图片描述


Driver Program

在 Apache Beam 中,driver program(驱动程序)是指我们编写的控制整个数据处理流程的主要程序。它负责定义数据处理流水线(pipeline),包括指定输入数据源、数据转换操作以及输出目的地,同时还设置了执行选项,如 Pipeline Runner。

简单来讲就是我们所以写的定义流水线的代码了。

Apache Beam 支持 GO, Java 和 Python, 这个系列主要focus on Java.



一些抽象概念

Beam SDK提供了许多抽象概念,简化了大规模分布式数据处理的机制。相同的Beam抽象概念适用于批处理和流处理数据源。在创建Beam流水线时,您可以根据这些抽象概念来思考您的数据处理任务。这些抽象概念包括:



管道(Pipeline)

管道封装了您的整个数据处理任务,从头到尾。这包括读取输入数据,转换数据以及写入输出数据。所有的 Beam 驱动程序都必须创建一个管道。创建管道时,您还必须指定执行选项,告诉管道在何处以及如何运行。

例如runner 选项就是告诉它在哪里执行, 包括Direct runner 和 dataflow runner



PCollection

PCollection 代表您的 Beam 管道操作的分布式数据集。数据集可以是有界的,意味着它来自于固定源(如文件),也可以是无界的,意味着它来自于不断更新的源(通过MQ或其他机制)。通常,您的管道通过从外部数据源读取数据来创建初始的 PCollection,但您也可以利用驱动程序内存中的数据来创建 PCollection。

PCollection 是管道中每个步骤的输入和输出。

简单来讲, PCollection 就是 Beam 框架中数据的集合, 相当于Pandas 的dataframe



PTransform

PTransform 表示管道中的数据处理操作或步骤。每个 PTransform 接受一个或多个 PCollection 对象作为输入,对该 PCollection 的元素执行您提供的处理函数,并生成零个或多个输出 PCollection 对象。

PTransform 就是步骤, 它是1个抽象借口

常见的Pardo-doFn 和 IO 都是PTransform的具体实现!



一个常见的Beam 流水线是如何定义的

一个典型的 Beam 驱动程序工作方式如下:

  1. 创建一个 Pipeline 对象并设置管道执行选项,包括 Pipeline Runner(也可在运行时指定)。
  2. 创建用于管道数据的初始 PCollection,可以使用 IOs 从外部存储系统读取数据,也可以使用 Create 转换从内存数据构建 PCollection。
  3. 对每个 PCollection 应用 PTransforms。转换可以改变、过滤、分组、分析或以其他方式处理 PCollection 中的元素。一个转换会创建一个新的输出 PCollection,而不会修改输入集合。一个典型的管道会依次将后续转换应用于每个新的输出 PCollection,直到处理完成。
  4. 但是,请注意,管道不必是一系列按顺序应用的转换的单一直线:将 PCollections 视为变量,将 PTransforms 视为应用于这些变量的函数:管道的形状可以是任意复杂的处理图。
  5. 使用 IOs 将最终转换后的 PCollections 写入外部源。
  6. 使用指定的 Pipeline Runner 运行管道。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CQRS模型解析
  • Git换行符自动转换参数core.autocrlf的用法
  • 第一个Web项目(java+servlet+jsp)
  • 五种数据库特性对比(Redis/Mysql/SQLite/ES/MongoDB)
  • 人工智能 | 基于ChatGPT开发人工智能服务平台
  • git 本地分支误删,怎么恢复?误删本地已提交未推送的分支!
  • Android 如何实现搜索功能:本地搜索?数据模型如何设计?数据如何展示和保存?
  • 二分算法——优选算法
  • [Python学习日记-26] Python 中的文件操作
  • 数据结构-树(基础,分类,遍历)
  • 黑马智数Day1
  • C++——将数组a[5]={-1,2,9,-5,7}中小于0的元素置成0。并将其结果输出(要求:用数组名作为函数的参数来实现)
  • 【无人机设计与控制】 基于matlab的蚁群算法优化无人机uav巡检
  • 通信工程学习:什么是VLAN虚拟局域网
  • go语言 数组和切片
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • docker python 配置
  • es6
  • Laravel Telescope:优雅的应用调试工具
  • Linux CTF 逆向入门
  • Python 基础起步 (十) 什么叫函数?
  • Shadow DOM 内部构造及如何构建独立组件
  • 分布式任务队列Celery
  • 计算机在识别图像时“看到”了什么?
  • 浏览器缓存机制分析
  • 思否第一天
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (42)STM32——LCD显示屏实验笔记
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (十)T检验-第一部分
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (学习日记)2024.01.09
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)为C# Windows服务添加安装程序
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .FileZilla的使用和主动模式被动模式介绍
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET Framework杂记
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • :=
  • @angular/cli项目构建--Dynamic.Form
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [20150707]外部表与rowid.txt
  • [C#学习笔记]LINQ
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  • [C++][数据结构][跳表]详细讲解
  • [C++]unordered系列关联式容器
  • [CakePHP] 在Controller中使用Helper
  • [COI2007] Sabor
  • [ffmpeg] x264 配置参数解析