什么是 AWS Glue?2025年1月7日 | 阅读 12 分钟 AWS Glue 简介AWS Glue 由 Amazon Web Services (AWS) 于 2017 年 8 月在纽约峰会上发布。作为一项 AWS 服务,它由亚马逊公司 (Amazon. Com, Inc.) 的子公司 Amazon Web Services America Inc. 开发和管理。AWS Glue 并非由某位创始人发明,而是源于 AWS 不断的研究和开发,旨在改进其云计算和数据分析服务的用户选项。 AWS Glue 是一款自动化的无服务器数据集成解决方案,用于数据收集、编目和准备,以供分析、机器学习和开发使用。它作为一项完全托管的提取、转换、加载 (ETL) 服务运行,简化了数据集成中许多复杂的问题,并使用户更轻松地处理和分析数据。 就定价而言,AWS Glue 的使用成本是因为其无服务器的特性,用户无需配置基础设施。它还帮助用户在开发和管理 ETL 作业时更加轻松,因为他们不必担心物理硬件的性能。AWS Glue 还集成了数据目录,可自动发现和持久化元数据,这使用户能够找到数据并了解在其他源中处理它的位置。 该服务提供了许多有助于完成数据集成的组件。在这种情况下,我们有爬虫程序,它们在数据源级别进行爬取,以推断现有架构并生成相应的元数据。这些 ETL 作业会分发和转换数据,还有触发器可以安排某些作业的执行。AWS Glue 与众多数据源兼容,包括 Amazon 服务,如 S3、RDS、Redshift 以及其他各种关系数据库。 在使用方面,AWS Glue 包括一个发达的环境,其中包含帮助开发 ETL 作业的工具,例如 AWS Glue Studio。此外,还支持基于 Python 和 Scala 编程语言的自定义脚本,以扩展更密集数据处理的功能。  AWS Glue 组件AWS Glue 数据目录- 元数据也被称为关于数据的数据,而数据目录是它的中央存储库。它们还有助于组织和管理有关不同数据资产的所有形式的元数据,从而使数据跟踪和搜索过程高效。然而,目录可以保存表定义、作业定义以及一些控制信息,以正确运行 ETL 过程。
爬虫程序- 爬虫程序在明确定义的计划上运行,以扫描多个数据源,推断可能的架构,并将元数据加载到数据目录中。它们可以处理多个数据源,包括 Amazon S3、JDBC 和 DynamoDB,从而可以轻松提取它们的元数据和架构。
分类器- 分类器帮助 AWS Glue 理解我们数据的结构。它们决定我们数据的逻辑架构,并在数据目录中生成相应的表定义。AWS Glue 附带 CSV、JSON 和 Avro 的预加载分类器,如果需要,用户可以开发新的分类器。
ETL 作业- AWS Glue 爬虫程序初始化 AWS Glue 中的 ETL 作业,而 ETL 作业是提取、转换和加载数据的任务。作业可以通过图形用户界面工具 AWS Glue Studio 定义,或者使用 Python 和 Scala 脚本进行定义。这些作业可以按需启动,也可以在预先设定的特定日期和时间运行。
触发器- AWS Glue 中的触发器用于在特定时间或响应特定事件时自动启动作业。通过指定作业应根据条件执行的实例(例如,在 S3 上上传新文件后),它在自动化 ETL 过程中发挥作用。
开发终端节点- 开发终端节点是用户系统的扩展,使用户能够交互式地开发 ETL 脚本。单元测试使我们能够在运行生产副本之前调试和优化 ETL 脚本。
连接- 这基本上是指 AWS Glue 如何连接到各种类型的数据源。它们维护连接到数据库和其他数据存储所需的所有连接详细信息,以实现安全连接或按需连接。
动态框架 (Dynamic Frames)- 在 AWS Glue 中,动态框架是一种数据结构,有助于创建分布式数据集。与严格的 DataFrame 相比,它为数据操作提供了一种松散的转换方式,能够实现比 DataFrame 更灵活、更无模式的数据转换。
Schedulers(调度器)- 这是一个调度程序控制 ETL 作业和爬取中间件流程的过程。它们使脚本能够在指定时间或定期执行某些任务,从而满足复杂的调度要求,甚至可以满足两个作业之间的依赖关系。
数据库- AWS Glue 的数据目录是一个元数据管理系统,其中数据库是表定义的组织。更具体地说,数据库有助于管理元数据并增强其可查询性。
数据存储- 数据存储可以定义为数据存储的地方,目的是长期存储。例如,PC 的网络文件夹、关系数据库和 Amazon S3 存储桶。数据存储库或主数据存储是我们以原始形式存储数据的位置。
数据源- 数据源也指 ETL 操作中从中提取和处理数据的数据来源。它包括所有必须抓取和重新排列的输入数据。
数据目标- 数据目标是其他连接中修改过的数据放置的地方。如相关 GSI 讨论中所述,这可能是一个数据仓库、一个数据库或一个 Amazon S3 存储桶。
转换(Transform)- AWS Glue 中的转换是在 ETL 过程中涉及数据格式、结构和内容的数据转换规则。根据我们的偏好和实现设置,可以使用 PySpark 脚本或 Scala 编程语言执行转换。
脚本- 脚本是显示数据将如何提取、转换并加载到目标位置的程序。PySpark 和 Scala 是 AWS Glue 使用的两种最流行的语言,AWS Glue 的脚本可以通过 AWS Glue 控制台或 API 进行控制。
表- 在 AWS Glue 数据目录中创建了一个表,其中包含 DW 中存储的数据的模式。这包括列名、数据类型、分区信息以及表的其他系统特征。
AWS Glue 的主要特点无服务器架构- AWS Glue 也是完全托管的,并且是无服务器选项,这意味着无需拥有基础设施,同时也意味着资源的自动扩展。
集成数据目录- 它作为一个单一的元数据来源运行,能够发现数据资源并将其导入网络,以便于搜索和分类。
自动模式检测- 检测模式的变化,并能够在不重新编程的情况下适应数据结构中的这些变化。
ETL 作业调度- 允许设置 ETL 作业以定期或周期性地执行,或在特定事件时进行数据处理。
数据转换和清理- 它通过图形用户界面或 Python 或 Scala 的可编程代码提供了广泛的数据转换和数据清理功能。
可扩展性- 它会自动调整计算资源以适应大量数据和各种转换。因此,它仍然是一种有效的方法。
Glue 爬虫程序- 对数据存储库进行分类,收集元数据,并将表注册到 Glue 数据目录。
与 AWS 服务集成- 它与其他 AWS 服务(如 S3、Redshift、RDS 和 SageMaker)配合良好,以改进数据摄取、存储和分析过程。
数据版本控制- 保留数据以记录数据和模式的版本,以提供历史记录和回滚到先前状态的能力。
自定义转换- 允许定义临时转换和决策,这在处理复杂的数据转换时非常有用。
真实生活示例金融数据处理- 一家大型金融公司使用 AWS Glue 为金融行业的大数据实施 ETL 流程。称为 Glue 爬虫程序的爬虫程序从 S3 和 RDS 等其他服务索引数据。Glue 可用于访问数据并将其转换为增值形式,以存储在数据仓库中,从而使过程更快、更准确。
电子商务分析- 一家电子商务公司使用 AWS Glue 来处理其客户信息和交易。Glue 在夜间运行,从销售数据库提取数据并转换数据以生成每日销售报告。这使公司能够深入了解客户及其销售情况,从而改进其营销策略。
医疗保健数据集成- 一家医疗保健提供商使用 AWS Glue 互操作来自各种来源(如 EHR 和实验室系统)的患者数据。Glue 检测组织的模式并对所有数据进行编目;这简化了患者记录的创建和更新。这种集成有助于提供商更好地为患者提供护理,并利用获得的数据进行更深入的研究分析。
媒体和娱乐- 一家媒体公司使用 AWS Glue 来管理存储在 Amazon S3 中的元数据和内容文件。Glue ETL 作业涉及将原始媒体内容转换为不同格式,以便在各种渠道上分发。这有助于他们有效地填充内容,并为所有内容资产提供一致的元数据。
物联网数据处理- 一家工业物联网公司使用 AWS Glue 进行物联网数据处理和分析。从这些传感器收集的数据存储在 S3 中,Glue 爬虫程序和作业将这些数据从 S3 暂存到数据仓库。处理过的数据可用于在线监控和预防性维护,以避免停运造成的成本。
零售库存管理- 一家零售连锁店使用 AWS Glue,因为它需要定期更新数据库中的库存。例如,交易以 Glue 作业的形式发生,Glue 作业在设定的时间从不同的 POS 系统提取数据、清理、转换并加载到库存管理系统中。这有助于连锁店顺畅地跟踪现有库存水平,以避免缺货或库存过多的情况。
AWS Glue 的最佳实践优化资源分配- 根据作业大小和要执行的作业类型提供正确的资源。在执行小型任务或项目时应采用 G.1X,而在执行主要任务或项目时应使用 G.2X。应在开发工作程序类型成本和可能获得的收益之间取得平衡。
充分利用 AWS Glue 数据目录- 强制持续使用 Glue 数据目录作为组织元数据的最佳方法。采取措施确保改进的数据目录,以增强数据发现和工作人员的性能。
高效利用爬虫程序- 应安排爬虫程序在夜间和其他不那么繁忙的时间运行,以避免增加系统负载。使用增量爬取,它比重复的完整爬取干扰更少,耗时更短。
分区数据- 根据按日期或区域等属性划分的原则,通过在 S3 中创建存储桶来细分数据。这倾向于提高查询性能,因为要求 Glue 作业仅扫描它们所需的特定分区可以最大限度地减少操作所花费的时间和成本。
监控和调试作业- 最佳实践是实施 AWS CloudWatch 作为监控服务,通过包含警报选项来评估 Glue 作业的状态,以防作业运行失败或性能不佳。允许作业之间通过书签形式保持状态,以防止重新处理已处理过的数据,并为故障排除目的使用 Glue 作业日志。
优化 ETL 脚本- 以避免将不必要的数据移动到不同位置的方式规划 ETL 作业,因为这会增加整个过程的时间和资源。在执行数据转换之前,应优先使用内置转换,并且仅在必要时使用其他转换来优化性能并最小化成本。
实施数据质量检查- 为了提高数据质量,我们应该在 ETL 过程中包含数据质量验证点。对于任何需要数据清理活动的数据提取、转换和加载操作,应使用 DynamicFrames 在将数据移动到目标位置之前验证数据的准确性。
AWS Glue 和其他基于云的 ETL 服务比较与云生态系统集成- AWS Glue: 它与 AWS 生态系统集成良好,并支持其服务,如 S3、Redshift、RDS、Athena 等。
- Google Cloud Dataflow: Cloud Logging 可以轻松地与 Google Cloud Platform 中的其他服务一起使用,包括 BigQuery、Cloud Storage、AI Platform 等,从而与 Google Cloud 服务无缝集成。
- Azure Data Factory: 与 Azure SQL Database 和 Azure Data Lake Storage 等 Azure 服务兼容性强,并深度支持 Azure 数据仓库,用于 Azure 上的大数据解决方案。
- Databricks: 云提供商独立,内置 AWS 和 Azure 功能,在这些选项上提供灵活性。它还提供与大量第三方服务和数据源的互连。
费用- AWS Glue: 该模型基于处理的数据量和特定工作所需的 ETL 作业时长,对于数据量不规则或不一致的工作很有效,但对于大规模使用可能成本较高。
- Google Cloud Dataflow: 定价取决于消耗的时间和所有使用的资源,对于长时间运行的操作可能稍重,但对大规模计算总体上有益。
- Azure Data Factory: 使用基于消耗的定价系统,根据定义的活动数量、数据量和管道时间进行组织,具有灵活性优势,但需要监控使用情况以防成本累积。
- Databricks: 定价取决于云提供商和选择的实例类型,此外还有高级功能和更高性能级别的额外成本,这可能很昂贵,但其高级功能使其合理。
连接到 ML/AI 服务。- AWS Glue: 它与 Amazon SageMaker 和 AWS Lambda 等其他 AWS AI 和机器学习产品协同工作,使机器学习模型的预处理和特征工程更轻松快捷。
- Google Cloud Dataflow: 它支持 Google AI Platform 进行模型部署和模型管理,但可能需要进行配置才能用于预处理数据。
- Azure Data Factory: 它还支持与 Azure Machine Learning 集成以训练和部署模型,但数据预处理需要更多额外的配置。
- Databricks: 除了 ETL 流程外,它还与 MLflow 机器学习生命周期紧密集成以进行编排。因此,它支持 AI 项目的数据解决方案。
无服务器架构- AWS Glue: 在完全无服务器模型上运行,该模型为用户管理底层基础设施,降低了运营开销,让用户可以专注于编写数据处理算法。
- Google Cloud Dataflow: 但是,在使用它时,必须明确配置规模,并且超出免费提供的一定限度的数据存储和计算会产生额外费用。
- Azure Data Factory: 提供无服务器数据集成功能,但您负责管理 Azure 计算以提高效率。
- Databricks: 它包含一个无服务器环境和一个类似 Jupyter 的界面。它致力于数据科学和分析的协作,并且可能根据计算消耗收费。
更高级别的信息和元数据管理- AWS Glue: 指令还配备了一个全面的数据目录,该目录组织元数据并提供独占的可自定义元数据部分,从而更轻松地集中数据并实现适当的数据管理。
- Google Cloud Dataflow: 它提供简单的元数据管理功能,但开箱即用地不包含强大的数据目录功能,这直接与 AWS Glue 竞争。
- Azure Data Factory: 支持元数据驱动的自动化,但开箱即用地缺乏端到端元数据支持,并且元数据沿袭能力有限。
- Databricks: 使用 Delta Lake 来增强数据管理,提供版本控制、模式检查和沿袭跟踪等功能,以实现强大的数据治理并强制执行法规遵从性。
结论AWS Glue 是一项无服务器、完全托管的 ETL 服务,可通过转换数据来准备用于分析的数据,并将其加载到数据存储中以供分析、机器学习或其他形式的数据处理。对于我们来说,以下关于此工具不做什么的描述可能更精确:其无服务器结构不需要用户担心数据处理基础设施;客户可以专注于数据转换和准备。AWS Glue 包含 Glue 数据目录、爬虫程序和作业等主要功能,这些功能有助于完成数据集成中耗时的步骤,如模式检测和代码生成。作为 AWS 的一部分,它可以与其他 AWS 工具协调工作,从而成为创建数据管道的现成解决方案。此外,该产品还支持动态框架和各种数据类型,以提供处理不同类型数据集的灵活性。对于任何需要高效解决方案来处理其分析和机器学习流程的数据,以及加速新数据产品开发的组织来说,AWS Glue 都是一项宝贵的服务。
|