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 运行管道。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DETR论文翻译与理解

DETR(Detection with transformer) DETR:End to End Object Detection with Transformer 论文链接:2005.12872 (arxiv.org) 参考视频:https://www.bilibili.com/video/BV1GB4y1X72R/?spm_id_from333.788&vd_…

硬件工程师笔试面试——开关

目录 11、开关 11.1 基础 开关原理图 开关实物图 11.1.1 概念 11.1.2 常见的开关类型及其应用 11.2 相关问题 11.2.1 开关的工作原理是什么? 11.2.2 在设计一个电子系统时,如何选择最适合的开关类型? 11.2.3 不同类型的开关在实际应用中有哪些优势和局限性? 11.…

爵士编曲:爵士鼓编写 爵士鼓笔记 底鼓和军鼓 闭镲和开镲 嗵鼓

底鼓和军鼓 底鼓通常是动的音色,军鼓通常是大的音色。 “动”和“大”构成基础节奏。“动大”听着不够有连接性,所以可以加入镲片! 开镲 直接鼓棒敲击是开镲音色 闭镲 当脚踩下踏板,2个镲片合并,然后用鼓棒敲击&am…

java(3)数组的定义与使用

目录 1.前言 2.正文 2.1数组的概念 2.2数组的创建与初始化 2.2.1数组的创建 2.2.1数组的静态初始化 2.2.2数组的动态初始化 2.3数组是引用类型 2.3.1引用类型与基本类型区别 2.3.2认识NULL 2.4二维数组 2.5数组的基本运用 2.5.1数组的遍历 2.5.2数组转字符串 2.…

面向对象程序设计——set容器の简析

1.set的介绍 • 序列式容器和关联式容器 • 我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间⼀般没有紧…

图片马赛克处理(Java)

1.需求 给图片的指定区域打码给整张图片打码马赛克方格取色支持中心点取色和随机取色马赛克支持灰度处理 2.源码 package com.visy.utils;import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOE…

(k8s)Kubernetes部署Promehteus

转载:Kubernetes(k8s)部署Promehteus 一、概述 在1.8版本以后heapster由metrics-server替代;从k8s的v1.11版本开始已经全面转向以Prometheus为核心的新监控体系架构;kube-prometheus 中包含了 prometheus 监控所用到的…

pg入门18—如何使用pg gis

1. 下载postgre gis镜像 2. 运行镜像 docker run -p 15432:5432 -d -e POSTGRES_PASSWORDAb123456! postgis/postgis:12-3.4-alpine 3. 使用gis # 进入容器,登录pgdocker exec -it bash# 登录数据库psql -U postgres# 创建数据库CREATE DATABASE mygeotest;# 使用…

算法:双指针题目练习

文章目录 算法:双指针移动零复写零快乐数盛最多水的容器有效三角形的个数查找总价格为目标值的两个商品三数之和四数之和 总结 算法:双指针 移动零 定义两个指针,slow和fast.用这两个指针把整个数组分成三块. [0,slow]为非零元素,[slow1,fast-1]为0元素,[fast,num.length]为未…

【Web】御网杯信息安全大赛2024 wp(全)

目录 input_data admin flask 如此多的FLAG 一夜醒来之全国CTF水平提升1000倍😋 input_data 访问./.svn后随便翻一翻拿到flag admin dirsearch扫出来 访问./error看出来是java框架 测出来是/admin;/路由打Spring View Manipulation(Java)的SSTI https:/…

基于ECC簇内分组密钥管理算法的无线传感器网络matlab性能仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于ECC簇内分组密钥管理算法的无线传感器网络matlab性能仿真,对比网络通信开销,存活节点数量,网络能耗以及数据通信量四个指标…

【Linux篇】TCP/IP协议(笔记)

目录 一、TCP/IP协议族体系结构 1. 数据链路层 (1)介绍 (2)常用协议 ① ARP协议(Address Resolve Protocol,地址解析协议) ② RARP协议(Reverse Address Resolve Protocol&…

华为为什么要做三折叠屏手机?

前些天我做了一条视频,关于讲华W的新的三折叠屏手机。我说我有点失望,结果引起了华W的同事的一些关注。于是,华W几位高管都跑过来,跟我解释为什么会出现这样的一个状态。 我才知道,这款手机他们其实是亏着钱在卖的。因…

C++速通LeetCode中等第1题-字母异位词分组

思路要点&#xff1a;对字符串排序&#xff0c;排序结果存放在map的key中&#xff0c;排序结果相同的字符串存放到map的value中 。 class Solution { public:string keys;vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vecto…

EECS498 Deep Learning for Computer Vision (一)软件使用指南

#最近开始学习深度学习的相关基础知识&#xff0c;记录一下相关笔记及学习成果# learning&#xff1a;building artificial systems that learn from data and experience deep learning(a set of machine learning): hierarchical learning algorithms with many "laye…

海洋大地测量基准与水下导航系列之二国外海底大地测量基准和海底观测网络发展现状(上)

海底大地控制网建设构想最先由美国斯克里普斯海洋研究所(Scripps Institution of Oceanography,SIO)提出&#xff0c;目前仅有少数发达国家具备相应技术条件。美国、日本、俄罗斯和欧盟等发达国家通过布测先进的海底大地控制网&#xff0c;不断完善海洋大地测量基准基础设施&am…

6、等级保护政策内容

数据来源&#xff1a;6.等级保护政策内容_哔哩哔哩_bilibili 信息安全产品管理与响应 等级管理 对信息系统中使用的信息安全产品实行按等级管理&#xff0c;信息安全事件应分等级响应与处置。 预测评服务由测评公司和咨询公司提供预测评服务&#xff0c;根据技术要求和测评要…

深度学习01-概述

深度学习是机器学习的一个子集。机器学习是实现人工智能的一种途径&#xff0c;而深度学习则是通过多层神经网络模拟人类大脑的方式进行学习和知识提取。 深度学习的关键特点&#xff1a; 1. 自动提取特征&#xff1a;与传统的机器学习方法不同&#xff0c;深度学习不需要手动…

前端工程化4:从0到1构建完整的前端监控平台

前言 一套完整的前端监控系统的主要部分&#xff1a; 数据上报方式数据上送时机性能数据采集错误数据采集用户行为采集定制化指标监控sdk 监控的目的&#xff1a; 一、数据上报方式 本文的方案是&#xff0c;优先navigator.sendBeacon&#xff0c;降级使用1x1像素gif图片…

Python3网络爬虫开发实战(17)爬虫的管理和部署(第一版)

文章目录 一、 Scrapyd 分布式部署1.1 了解 Scrapyd1.2 准备工作1.3 访问 Scrapyd1.4 Scrapyd 的功能1.5 ScrapydAPI 的使用 二、Scrapyd-Client 的使用2.1 准备工作2.2 Scrapyd-Client 的功能2.3 Scrapyd-Client 部署 三、Scrapyd 对接 Docker3.1 准备工作3.2 对接 Docker 四、…