亚马逊云科技Glue

Glue 最重要的部分,
ETL:用于从 A 点(我们的源数据)提取、转换和加载数据到 B 点(目标文件或数据存储库)。 AWS Glue 会为您执行大量此类工作。 转换通常是更繁重的工作,需要从各种来源进行组合、清理数据、正确映射到目标、形成新模式、聚合或分解等等。

AWS Glue 的优势:

AWS Glue 中的 ETL 代码可以轻松运行无服务器。 AWS Glue 有一个爬网程序,可以推断源数据、工作数据和目标数据的架构,爬网程序可以按计划运行以检测更改。

使用 AWS Glue 的功能创建爬网程序来生成源文件的元数据,这有助于我们从源到目标的映射。

现在 ETL 代表提取转换负载。 这是将来自多个系统的数据组合到单个数据库、数据存储或仓库以进行遗留存储或分析的常见范例。

提取是从一个或多个来源(在线、实体、遗留数据、Salesforce 数据等)检索数据的过程。 检索数据后,ETL 将计算工作,将其加载到暂存区域并为下一阶段做好准备。 转换是映射、重新格式化、一致、添加含义等以更容易使用的方式准备数据的过程。 。 所有这些工作都在业务智能开发人员所谓的 ETL 作业中进行处理。

云、SaaS 和大数据的出现导致新数据源和数据流的数量激增。 此外,数据源种类更多、数据量更大,并且需要在世界各地的系统之间更快地移动数据。 因此,对更复杂的数据集成工具的需求激增,这些工具可以处理更大的数据量、更高的速度以及更多的种类。 此外,随着时间的推移,技术不断发展,以帮助解决数据集成问题并提高为决策支持准备数据的速度。 除了能够连接云资源之外,其中许多改进都是在本地工具上进行的。 另一方面,ETL工具也在云端开发,在某些情况下,除了连接云资源之外,它还能更好地处理大数据问题。

ETL 技术的改进之一是提供实时或近实时分析。 另一个改进是简化并降低ETL工作的成本。 这可以通过提供或维护运行 ETL 作业的基础设施来部分实现。 在代码中运行且对所配置的内容知之甚少或一无所知的代码的名称是无服务器 ETL。

无服务器 ETL 的参与具有简化 ETL 流程的好处,例如允许数据开发人员有更多时间专注于准备数据和构建数据管道,而不是考虑与 ETL 作业和运行一致的本地软件。 另一个好处是可以更无缝地交换云中已有的异构数据源和数据目的地。下面的表格有助于显示无服务器 ETL 和传统 ETL 之间的差异。 这些差异包括在 AWS 服务上运行的无服务器代码的优势。 AWS Glue 提供了一个 UI,允许您构建 ETL 作业的源和目标,并自动为您生成无服务器代码。

1.AWS Glue 爬网程序连接到数据存储,同时处理分类器列表,帮助确定数据架构并为 AWS Glue 数据目录创建元数据。 虽然爬虫会发现表方案,但它不会发现表之间的关系。 元数据存储在数据目录中,用于帮助为您的 ETL 作业提供流程。 您可以根据需要从选项菜单中按计划运行爬网程序,或者在基于 Linux 的操作系统中创建自定义 cron 作业,并根据事件(例如交付新数据文件)触发。 通过运行爬网程序,存储在数据目录表中的元数据将随着架构更改(例如数据源中的新列)等项目进行更新。 您可以按照向导并执行以下步骤,以最简单的方式创建 AWS Glue 爬网程序。 首先,为您的爬虫命名。 然后,您必须选择一个数据存储并包含它的路径,在这里您可能会包含 ace 粘合图案。 (可选)添加另一个数据存储、选择 IAM 行或创建一个新行。 为此爬网程序创建计划,配置爬网程序的输出,在此步骤中,您必须添加或选择包含由您正在创建的爬网程序创建的表的现有数据库。

可以在数据目录中添加爬网程序以实现数据存储的多样化。 爬网程序的输出由数据目录中定义的一个或多个元数据表组成。 请注意,您的爬网程序使用 AWS Identity and Access Management by IAM 角色来获取访问数据存储和数据目录的权限。

  1. 分类器Classifiers.。 分类器读取数据存储中的数据并给出输出以包括指示文件的分类或格式的字符串。 例如 JSON 和文件的架构。 AWS Glue 提供各种格式的内置分类器,包括 JSON、CSV、Web 日志和许多数据库系统。 CSV 分类器检查以下分隔符:逗号、竖线、制表符和分号。 您可以包含或排除模式来管理爬网程序将搜索的内容。 例如,您可以排除以 CSV 文件扩展名结尾的所有对象,或排除 S3 存储桶中的特定文件夹。 正则表达式也可用于排除模式。 对于自定义分类器,您可以根据分类器的类型定义创建架构的逻辑。 如果您的数据与任何内置分类器都不匹配或者您想要自定义爬网程序创建的表,则您可能需要确定自定义分类器。

  2. 连接。 连接创建连接到数据所需的属性。 AWS Glue 作业中的爬网程序使用连接来访问某些类型的数据存储。 AWS Glue 可以使用 JDBC 协议、Amazon Redshift 和 Amazon RDS 连接到以下数据存储,包括 Amazon Aurora、MariaDB、Microsoft SQL Server、MySQL、Oracle 和 PostgreSQL。 可以在创建爬网程序时选择的数据存储将推断架构,从而推断收集并存储在数据目录中的元数据。

  3. 数据目录。 AWS Glue 数据目录是在您运行爬网程序时创建的。 它是数据资产的持久元数据存储,包含表定义、作业定义和其他控制信息,可帮助您管理 AWS Glue 环境。 保留目标数据存储的架构版本历史记录,以便您可以查看数据随时间的变化情况。 当您完成创建作业的 UI 指南时,AWS Glue 会自动生成 ETL 作业的提取、转换和加载步骤的代码。 代码是根据您在 Scala 和 Python 之间的选择生成的,并且是为 Apache Spark 编写的。 提供开发端点供您编辑、调试和测试它为 ETL 作业生成的代码。 您可以使用您的首选 IDE 编写自定义读取器、写入器或转换,以作为客户库包含在您的 AWS Glue ETL 作业中。

AWS Glue 作业可以计划运行、按需运行或通过事件触发运行。 您可以启动多个作业并行运行,或者指定作业之间的依赖关系以构建更复杂的 ETL 管道。 日志和通知被推送到 Amazon CloudWatch,以便您可以监视、收到警报并对已运行的作业进行故障排除。

现在让我们看一下有关如何创建 AWS Glue 作业的图表。 首先,您为您的工作选择一个数据源。 表示数据源的表必须已在数据目录中定义。 如果源需要连接,则您的作业中也会引用该连接。 请记住,连接包含连接到数据所需的属性。 如果您的作业需要多个数据源,您可以稍后通过编辑脚本来添加它们。 该脚本是自动生成的,在完成作业创建向导后立即可用。 接下来,您选择作业的数据目标。 表示数据目标的表可以在您的数据目录中定义,或者您的作业可以在运行时创建目标表。 您可以在创作作业时选择目标位置,如果目标需要连接,则作业中也会引用该连接。 如果您的作业需要多个数据目标,您可以稍后通过再次编辑脚本来添加它们。 接下来,您通过为作业和生成的脚本提供参数来自定义作业处理环境。 我们将在下一讲中添加一个带有演示的作业。 最初,AWS Glue 会生成一个脚本,但您也可以编辑该脚本以添加源、目标和转换。 您指定如何通过基于吨的计划或事件按需调用您的作业。 有关更多信息,请参阅接下来的演示,其中包括在 AWS Glue 中创建触发器并将其应用到作业。

根据您的输入,AWS Glue 生成 Pyspark 或 Scala 脚本。 您可以根据您的业务需求定制脚本。 如果您无权访问数据存储,您将被阻止,因此您必须使用以下任意类型的具有加密权限的身份、IAM 用户或 IAM 角色。 除了使用名称和密码之外,您还可以为每个用户生成访问密钥。 作为最佳实践,您不希望使用 root 用户访问数据源,但应努力限制仅访问所需的数据源,并维护对敏感数据的某些治理。 那么 AWS Glue 有什么好处呢? 无服务器。 您只需在 AWS Glue 运行时为资源付费。 爬网程序只需很少的配置即可从数据源检测并推断模式,并且可以安排爬网,还可以触发作业运行以执行 ETL。 自动代码生成为您提供了在 Python 或 Scala 代码中运行简单作业或在您自己的代码添加中进行扩展所需的功能。 该代码通过自定义端点与外部工具链集成。

使用 AWS Glue,您可以为发现数据的爬网程序以及处理和加载数据的 ETL 作业按秒计费。 对于 AWS Glue 数据目录,您只需支付简单的月费即可存储和访问元数据。 存储的前一百万个对象是免费的,前一百万个访问也是免费的。 如果您配置开发端点来交互式开发 ETL 代码,则您需要按每秒计费的小时费率付费。 在 US East-One 中,每个 DPU 小时的成本为 0.44 美元,单个 DPU 提供四个虚拟 CPU 和 16 GB 内存。 那么您什么时候会选择不使用 AWS Glue? 与许多技术一样,如何执行 ETL 也是有争议的。 还有许多其他本地和云中的 ETL 方法可以满足开发人员和组织的需求。 您的公司或团队可能已经在使用本地部署或其他 ETL 管道技术方面进行了大量投资,并且大多数 ETL 工具仍然是本地部署的,并且管道是通过 UI 可视化创建的。 语言仅限于 Python 和 Scala,并且更新架构时必须编辑作业。 如果您已经进行了开发,您的团队可能会对 Java 或其他语言进行投资。 AWS Glue 仍然是一个相对年轻的产品,目前没有第三方开箱即用的连接器,例如sales force 和其他您可以在更成熟的 ETL 工具集中期待的连接器。

爬虫的例子

在这里插入图片描述

从 AWS S3 移动到 RDS MySQL 数据库所需的生命周期和流程。 此外,您还必须设置一个将与 AWS Glue 以及源数据和目标数据配合使用的安全 IAM 角色。

将使用爬网程序在数据目录中创建一个数据库,然后运行创建并运行 ETL 作业,将数据从 S3 源移动到 MySQL 数据库。 之后,您可以选择使用 Amazon QuickSight 或其他一些 BI 工具来查看可视化效果并分析数据。

我们要做的第一件事是创建一个爬虫。 现在,当我们创建爬虫时,在此过程中,我们将创建数据库和表,该表是数据目录并存储数据源或数据目标的元数据。我们只是为数据源创建一个爬虫。 单击添加爬网程序,然后我将选择我的数据源,即我们再次从交通统计局下载并上传到此处的 S3 存储桶的 CSV 文件。 点击下一步。 现在,如果我们愿意,我们可以添加另一个数据存储,,然后我们可以安排爬网程序每小时、每天或按需运行。 我们只会根据需要保留它,但有时您的存储桶中有新文件,并且您希望更定期地进行爬网。 捕获架构更改。

让我们添加我们的数据库。然后我们就完成了。 我们需要做的就是运行爬虫。 现在,当爬虫运行时,它会生成一些日志,这些日志将告诉我们爬虫是否成功,并且还允许我们排除是否存在任何问题。 这是爬网程序成功运行的日志示例。 除了运行爬虫之外,我们还想创建到数据目的地的连接。 我们知道我们正在连接到 MySQL 数据库。 我们可以单击“完成”。 现在,关于爬虫需要注意的一件事是,我们可以向爬虫添加一个分类器来帮助定义我们的数据源,并且有很多选项,这些是分类器类型。 如果您选择 Grok,那么您可以选择分类或数据格式类型,并且可以提供 Grok 模式。 您还可以选择 XML、JSON 或 CSV,最常见的数据源之一是 CSV 文件,但 CSV 文件有所不同,它们可能以逗号分隔制表符或管道分隔。 在本例中,您需要定义 CSV 文件。 我们的 CSV 文件非常常见,我们不需要使用分类器。 我们实际上使用了默认分类河 看起来我们的爬虫已经完成了。

我们已经创建了一个数据连接,现在我们要做的是创建一个作业,该作业将是 Csv_to_MySql。 同样,我们将使用之前创建的相同 IAM 角色。 我们将保留默认值。 我们将使用 AWS Glue 和 Python 生成脚本。 现在我们可以选择我们的数据源。 现在我们可以选择我们的数据目标。 现在,在本例中,我们要在我们创建的连接上创建表。 我们的数据库名称是destinationdemo。 我们点击“下一步”。 现在您可以看到映射就在这里。 我们可以进行一些编辑。 我们可以添加一列,如果愿意的话也可以添加一个空列。 但一切都已准备就绪,我们可以从数据源(即 CSV 文件)获取数据,对其进行转换并将其映射到目标数据库。 现在,一旦我们单击“保存”,它就会生成 Python 代码,我们可以在此处进行其他自定义。

我们创建的爬虫创建了一个数据库和一个表,当我们打开它时,该表会显示源文件中的元数据或列,我们可以查看以 JSON 形式出现的属性。 我们还可以编辑模式,例如,如果我们希望年份是 int,我们可以将 Bigint 更改为 int 数据类型。 更新并保存。 我们还可以添加一列。 我们还可以比较版本,例如,如果我们的爬虫抓取了两个不同的源,我们可以看到架构如何更改,并将其与一个和另一个之间的元数据定义进行比较。 我想讨论的另一件事是添加触发器。 现在,触发器可以安排我们创建的作业。 它可以按特定顺序或按需运行作业。 因此,如果我想在另一项工作之后运行一项工作,我想为此创建一个触发器。

AWS Glue 的优势,

  1. AWS Glue 中的 ETL 代码可以轻松运行无服务器。
  2. AWS Glue 有一个爬网程序,可以推断源数据、工作数据和目标数据的架构,爬网程序可以按计划运行以检测更改,
  3. AWS Glue 会自动生成 ETL 脚本,作为在 Python 或 Scala 中进行自定义的起点。

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

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

相关文章

【嵌入式DIY实例】-自动割草机器

自动割草机器 文章目录 自动割草机器1、割草机器介绍2、硬件准备3、功能设计4、硬件接线5、代码实现本文将介绍如何使用 Arduino 构建一个简易自动割草机机器人或割草机机器人。该机器人可以自动剪掉花园里多余的草。如果花园里有障碍物,它会自动改变方向。帮助以减少人力。 警…

【Elasticsearch】windows安装elasticsearch教程及遇到的坑

一、安装参考 1、安装参考:ES的安装使用(windows版) elasticsearch的下载地址:https://www.elastic.co/cn/downloads/elasticsearch ik分词器的下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases kibana可视化工具下载…

网络编程套接字——实现简单的UDP网络程序

目录 1、预备知识 1.1、认识端口号 1.2、端口号 vs 进程pid 1.3、认识TCP协议 1.4、认识UDP协议 1.5、网络字节序 2、socket编程接口 2.1、socket常见API 2.2、sockaddr结构 3、实现一个简易的UDP服务器和客户端通信 log.hpp UdpServer.hpp UdpClient.cc Main.cc…

upload-labs通关方式

pass-1 通过弹窗可推断此关卡的语言大概率为js,因此得出两种解决办法 方法一 浏览器禁用js 关闭后就逃出了js的验证就可以正常php文件 上传成功后打开图片链接根据你写的一句话木马执行它,我这里采用phpinfo() 方法二 在控制台…

【网络编程基础(一)】网络基础和SOCKET

这里写目录标题 1、网络三要素2、IPV4和IPV6区别3、网络交互3.1、交互模型图3.2、基础通信协议3.3、OSI参考模型与TCP/IP参考模型对应关系 4、SOCKET网络套接字4.1、SOCKET分类4.2、基于流式套接字的编程流程4.3、网络通信雏形4.4、socket函数4.4.1、socket函数示例 4.5、bind函…

蓝桥杯小白赛第 7 场 3.奇偶排序(sort排序 + 双数组)

思路:在第一次看到这道题的时候我第一想法是用冒泡,但好像我的水平还不允许我写出来。我又读了遍题目发现它的数据很小,我就寻思着把它分成奇偶两部分。应该怎么分呢? 当然在读入的时候把这个问题解决就最好了。正好它的数据范围…

【相关问题解答1】bert中文文本摘要代码:import时无法找到包时,几个潜在的原因和解决方法

【相关问题解答1】bert中文文本摘要代码 写在最前面问题1问题描述一些建议import时无法找到包时,几个潜在的原因和解决方法1. 模块或包的命名冲突解决方法: 2. 错误的导入路径解决方法: 3. 第三方库的使用错误解决方法: 4. 包未正…

C++算法学习心得八.动态规划算法(4)

1.零钱兑换(322题) 题目描述: 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。…

CSDN学习笔记总索引(2024)——我的创作纪念日(1024)

2021-05-21至2024-03-17笔记,收集并展示浏览阅读点赞收藏等数据。 (本笔记适合初通Python,对其基本数据类型字符串str、列表list、元组tuple、字典dict初步了解,认识Linux获取Html文本指令crul、会使正则模块re的coder翻阅) 【学习的细节是欢…

VS2019加QT5.14中Please assign a Qt installation in ‘Qt Project Settings‘.问题的解决

第一篇: 原文链接:https://blog.csdn.net/aoxuestudy/article/details/124312629 error:There’ no Qt version assigned to project mdi.vcxproj for configuration release/x64.Please assign a Qt installation in “Qt Project Settings”. 一、分…

Linux基础开发工具之yum与vim

1. Linux软件包管理器——yum 1.1 什么是软件包? 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, …

Nginx离线安装(保姆级教程)

1、下载与安装gcc-c环境 获取rpm包的方式很多,在这里推荐使用yum工具获取,因为手动从官网下载,手动执行rpm -Uvh *.rpm --nodeps --force命令进行安装,可能会缺少某个依赖,我们也不确定到底需要哪些依赖。 因此需要准…

基于Linux内核的socket编程(TCP)的C语言示例

原文地址&#xff1a;https://www.geeksforgeeks.org/socket-programming-cc/ 服务端&#xff1a; #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <unistd.h>#…

Python之Web开发中级教程----搭建Web框架二

Python之Web开发中级教程----搭建Web框架二 搭建虚拟环境 虚拟环境的作用 虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响. 搭建虚拟环境 &#xff08;1&#xff09;安装 sudo pip install virtualenv sudo pip install virtualenvwra…

在线答疑系统|基于springboot框架+ Mysql+Java+Tomcat的在线答疑系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 学生功能模块 教师后台功能模块 管理员功能模块 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研…

Redis实现分布式锁源码分析

为什么使用分布式锁 单机环境并发时&#xff0c;使用synchronized或lock接口可以保证线程安全&#xff0c;但它们是jvm层面的锁&#xff0c;分布式环境并发时&#xff0c;100个并发的线程可能来自10个服务节点&#xff0c;那就是跨jvm了。 简单分布式锁实现 SETNX 格式&…

【ollama】linux、window系统更改模型存放位置,全网首发2024!

首先是window系统 so easy 直接进入系统环境变量添加就行 其次是linux系统 全靠自己试出来的,去Ollama官网找半天文档不知道在哪,而且linux也没有说:【 https://github.com/ollama/ollama/blob/main/docs/README.md https://github.com/ollama/ollama/blob/main/docs/li…

最大异或对(trie树)

题目描述&#xff1a; 思路&#xff1a; 1、首先此题我们要知道异或的规则&#xff0c;这里不赘述了&#xff0c;可以百度 2、如果利用trie树去找到一个数字与其异或能得到最大值 比如二进制数&#xff1a;1010.....是一个很大的数 我们想要异或得到的值更大&#xff0c;就需…

HarmonyOS(二十)——管理应用拥有的状态之LocalStorage(页面级UI状态存储)

LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内&#xff0c;在页面间共享状态。 本文仅介绍LocalStorage使用场景和相关的装饰器&#xff1a;LocalStorageProp和LocalS…

微服务技术栈之rabbitMQ高级(二)

我们该如何确保MQ消息的可靠性&#xff1f; 如果真的发送失败&#xff0c;有没有其它的兜底方案&#xff1f; 这些问题&#xff0c;在这一次的学习中都会找到答案。 生产者的可靠性 首先&#xff0c;我们一起分析一下消息丢失的可能性有哪些。 消息从发送者发送消息&#…