问:什么是 AWS Glue?

AWS Glue 是一项完全托管且按需付费的提取、转换和加载 (ETL) 服务,可自动执行准备数据以供分析的这些非常耗时的步骤。AWS Glue 通过 Glue 数据目录自动发现并绘制您的数据,推荐并生成 ETL 代码,以将源数据转换成目标架构,并在完全托管的横向扩展 Apache Spark 环境中运行 ETL 作业,将数据加载到其目标中。它还使您能够设置、编排和监控复杂的数据流。

问:如何开始使用 AWS Glue?

要开始使用 AWS Glue,只需登录 AWS 管理控制台,然后导航到“分析”分类下的“Glue”即可。您可以按照我们的其中一个指导教程进行操作,它将向您介绍 AWS Glue 的示例使用案例。您还可以在 AWS 实验室下的 GitHub 存储库中找到示例 ETL 代码。

问:AWS Glue 的主要组件是什么?

AWS Glue 由数据目录 (一个中央元数据存储库)、ETL 引擎 (可自动生成 Python 代码) 和灵活的调度程序 (可处理依赖关系解决方案、任务监控和重试) 组成。这些组件结合在一起,自动执行与发现、分类、清理、丰富和移动数据相关的许多无差别的繁重任务,因此您可以将更多时间用在数据分析上。

问:何时应使用 AWS Glue?

您应该使用 AWS Glue 来发现您所拥有的数据的属性、将其进行转换并准备以供分析。Glue 可以自动发现存储在 Amazon S3 数据湖、Amazon Redshift 数据仓库以及在 AWS 上运行的各种数据库中的结构化和半结构化数据。它通过 Glue 数据目录提供统一的数据视图,该数据目录可用于 ETL 以及使用 Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 等服务进行查询和报告。Glue 会自动为您的 ETL 任务生成 Python 代码,因此您可以使用已经熟悉的工具进一步进行自定义。AWS Glue 属于无服务器服务,因此无需配置和管理计算资源。

问:AWS Glue 支持哪些数据源?

AWS Glue 为以下位置存储的数据提供本地支持:Amazon Aurora、Amazon RDS for MySQL、Amazon RDS for Oracle、Amazon RDS for PostgreSQL、Amazon RDS for SQL Server、Amazon Redshift 和 Amazon S3,以及 Amazon EC2 上运行的 Virtual Private Cloud (Amazon VPC) 中的 MySQL、Oracle、Microsoft SQL Server 和 PostgreSQL 数据库。您可以从 Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 轻松访问存储在 AWS Glue 数据目录中的元数据。您还可以编写自定义 PySpark 代码,并在 Glue ETL 任务中导入自定义库,以访问 AWS Glue 在本地不支持的数据源。有关导入自定义库的更多详细信息,请参阅我们的文档

回到顶部 »


问:什么是 AWS Glue 数据目录?

AWS Glue 数据目录是一个中央存储库,用于存储所有数据资产的结构和操作元数据。对于给定的数据集,您可以存储其表定义和物理位置、添加业务相关属性以及跟踪此数据如何随着时间发生变化。

AWS Glue 数据目录与 Apache Hive 元数据库兼容,可以替代用于 Amazon EMR 上运行的大数据应用程序的 Apache Hive 元数据库。有关设置 EMR 群集将 AWS Glue 数据目录作为 Apache Hive 元数据库使用的更多信息,请单击此处

AWS Glue 数据目录还实现了与 Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 之间的开箱即用集成。当您将表定义添加到 Glue 数据目录后,它们即可用于 ETL,并且还可以在 Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 中轻松查询,以便您能够对这些服务之间的数据有一个通用视图。

问:如何将元数据导入 AWS Glue 数据目录?

AWS Glue 提供了多种将元数据填充到 AWS Glue 数据目录中的方法。Glue 网络爬虫会扫描您拥有的各种数据存储,以自动推断出架构和分区结构,并使用相应的表定义和统计信息来填充 Glue 数据目录。您还可以安排网络爬虫定期运行,以便您的元数据始终处于最新状态并与底层数据保持同步。或者,您可以通过使用 AWS Glue 控制台或调用 API 来手动添加和更新表详细信息。您还可以通过 Amazon Athena 控制台或 Amazon EMR 群集上的 Hive 客户端来运行 Hive DDL 语句。最后,如果您已经拥有了永久 Apache Hive 元数据库,则可以使用我们的导入脚本将这些元数据批量导入到 AWS Glue 数据目录中。

问:什么是 AWS Glue 网络爬虫?

AWS Glue 网络爬虫连接到数据存储,通过分类器的优先级列表来提取数据架构和其他统计信息,然后使用该元数据来填充 Glue 数据目录。抓取程序可定期运行,以检测新数据的可用性以及现有数据的更改,包括表定义的更改。抓取程序会自动将新表、新分区以及新版本的表定义添加到现有表。您可以自定义 Glue 网络爬虫,以对自己的文件类型进行分类。

问:如何将数据从现有的 Apache Hive 元数据库导入到 AWS Glue 数据目录中?

您只需运行 ETL 任务即可,该任务将从 Apache Hive 元数据库读取数据,并将数据以中间格式导出到 Amazon S3 中,然后再将该数据导入 AWS Glue 数据目录中。

问:如果将元数据存储在 AWS Glue 数据目录中,那么是否还需要保留 Apache Hive 元数据库?

不需要。AWS Glue 数据目录与 Apache Hive 元数据库兼容。您可以指向 Glue 数据目录终端节点,并使用它来替换 Apache Hive 元数据库。有关如何配置群集将 AWS Glue 数据目录作为 Apache Hive 元数据库使用的更多信息,请访问此处阅读我们的文档。

问:如果已经在使用 Amazon Athena 或 Amazon Redshift Spectrum,并且也已经在 Amazon Athena 的内部数据目录中存储了表,那么应该如何开始使用 AWS Glue 数据目录作为通用元数据存储库?

您必须先将 Amazon Athena 数据目录升级到 AWS Glue 数据目录,然后才能开始使用 AWS Glue 数据目录作为 Amazon Athena、Amazon Redshift Spectrum 和 AWS Glue 之间的通用元数据存储库。此处详细介绍了升级所需的步骤。

回到顶部 »


问:如何自定义 AWS Glue 生成的 ETL 代码?

AWS Glue 的 ETL 脚本推荐系统可生成 PySpark 代码。它利用 Glue 的自定义 ETL 库来简化对数据源的访问以及管理任务执行情况。有关库的更多详细信息,请参阅我们的文档。您可以使用 AWS Glue 的自定义库来编写 ETL 代码,或者也可以使用 Python 编写任意 Spark 代码 (PySpark 代码),方法是通过 AWS Glue 控制台脚本编辑器使用内联编辑、下载自动生成的代码,然后在自己的 IDE 中进行编辑。您也可以一开始使用我们的 Github 存储库中托管的许多示例代码之一,然后自定义此代码。

问:是否可以导入自定义库作为 ETL 脚本的一部分?

可以。您可以将自定义 PySpark 库导入到 AWS Glue ETL 任务中。有关更多详细信息,请在此处参阅我们的文档。

问:是否可以使用自己的代码?

可以。您可以使用 AWS Glue 的 ETL 库自己编写代码,或者自己编写 PySpark 代码,然后将其上传到 Glue ETL 任务。有关更多详细信息,请在此处参阅我们的文档。

问:如何使用自己的 IDE 开发 ETL 代码?

您可以创建开发终端节点并进行连接,从而获得连接到笔记本和 IDE 的方法。

问:如何使用 AWS Glue 中的多个任务构建端到端的 ETL 工作流?

除了 ETL 库和代码生成,AWS Glue 还提供一套强大的编排功能,可让您管理多个任务之间的依赖关系,以构建端到端的 ETL 工作流。AWS Glue ETL 任务可以按计划或按任务完成事件进行触发。可并行触发多个任务,也可以按任务完成事件依次触发任务。您还可以从外部来源触发一个或多个 Glue 任务,例如 AWS Lambda 函数。

问:AWS Glue 如何监控依赖关系?

AWS Glue 可使用触发器管理两个或多个任务之间的依赖关系或外部事件上的依赖关系。触发器可以监控以及调用一个或多个任务。您可以使用计划触发器来定期调用任务,也可以使用按需触发器或任务完成触发器来调用任务。

问:AWS Glue 如何处理错误?

AWS Glue 可监控任务事件指标和错误,并会将所有通知推送到 Amazon CloudWatch。您可以借助 Amazon CloudWatch 配置大量可基于 AWS Glue 特定通知触发的操作。例如,如果您从 Glue 获得错误或成功通知,则可以触发 AWS Lambda 函数。Glue 还提供默认重试行为,会在发送错误通知之前,重试三次所有失败的操作。

问:是否可以使用 AWS Glue 运行现有的 ETL 任务?

可以。您可以在 AWS Glue 上运行现有的 PySpark 代码。仅需将代码上传到 Amazon S3,然后创建一个或多个使用此代码的任务即可。您可以将多个任务指向 Amazon S3 上的同一代码位置,从而可以跨这些任务重复使用同一代码。

问:如何使用 AWS Glue 来对流数据执行 ETL 操作?

AWS Glue ETL 面向的是批量操作,您可以至少以 5 分钟为时间间隔来安排 ETL 任务。虽然它可以处理微批量,但它不能处理流数据。如果您的使用案例要求您以流方式处理数据的同时对其执行 ETL 操作,则可以使用 Amazon Kinesis、Amazon Kinesis Firehose 或 Amazon Kinesis Analytics 执行 ETL 的第一阶段,然后将数据存储到 Amazon S3 或 Amazon Redshift 中,并触发 Glue ETL 任务,以提取数据集,然后继续对数据执行转换。

问:是否必须同时使用 AWS Glue 数据目录和 Glue ETL 才能使用该服务?

不是。虽然我们确信同时使用 AWS Glue 数据目录和 ETL 可提供端到端的 ETL 体验,但您也可以单独使用其中任意一个。

回到顶部 »


问:分别应在何时使用 AWS Glue 与 AWS Data Pipeline?

AWS Glue 可提供在无服务器 Apache Spark 环境中运行的托管 ETL 服务。这使您能够专注于 ETL 任务,不用担心配置和管理底层计算资源。AWS Glue 采用数据第一的方式,可让您专注于数据属性和数据操作,以将数据转换为您可以获取业务见解的形式。它可提供集成的数据目录,以便对元数据执行 ETL 操作,以及可通过 Amazon Athena 和 Amazon Redshift Spectrum 进行查询。

AWS Data Pipeline 可提供托管编排服务,为您在执行环境、访问和控制运行代码的计算资源以及本身执行数据处理的代码方面提供更大的灵活性。AWS Data Pipeline 可在您的账户中启动计算资源,从而使您能够直接访问 Amazon EC2 实例或 Amazon EMR 群集。

此外,AWS Glue ETL 任务基于的是 PySpark。如果您的使用案例要求您使用 Apache Spark 以外的引擎,或者您想运行在各种引擎 (如 Hive、Pig 等) 上运行的异构作业集,那么 AWS Data Pipeline 将是一个更好的选择。

问:分别应在何时使用 AWS Glue 与 Amazon EMR?

AWS Glue 基于 Apache Spark 环境运行,为数据转换作业提供横向扩展的执行环境。AWS Glue 可推断、拓展和监控 ETL 任务,大大简化了任务的创建和维护过程。Amazon EMR 可让您直接访问 Hadoop 环境,为您在使用 Spark 以外的工具时提供较低级的访问权限和更高的灵活性。

问:分别应在何时使用 AWS Glue 与 AWS Database Migration Service?

AWS Database Migration Service (DMS) 可帮助您轻松并安全地将数据库迁移至 AWS。如果需要将数据库从本地迁移至 AWS 或需要本地源与 AWS 上的源之间进行数据库复制,我们建议您使用 AWS DMS。一旦数据位于 AWS 中,您就可以使用 AWS Glue 将数据源中的数据移动到另一个数据库或数据仓库 (比如 Amazon Redshift) 中并进行转换。

问:分别应在何时使用 AWS Glue 与 AWS Batch?

AWS Batch 使您能够轻松有效地在 AWS 上运行任何批量计算任务,而无需考虑任务的性质。AWS Batch 可在您的 AWS 账户中创建和管理计算资源,使您能够全面控制和了解所使用的资源。AWS Glue 是一项完全托管的 ETL 服务,可提供无服务器的 Apache Spark 环境来运行 ETL 作业。对于 ETL 使用案例,我们建议您探索使用 AWS Glue。对于其他面向批量操作的使用案例,其中包括一些 ETL 使用案例,AWS Batch 可能是更合适的选择。

问:分别应在何时使用 AWS Glue 与 Amazon Kinesis Analytics?

Amazon Kinesis Analytics 允许您对传入数据流运行标准 SQL 查询。您可以指定像 Amazon S3 这样的目标源来编写结果。一旦数据在目标数据源中可用,您就可以启动 AWS Glue ETL 任务来进一步转换数据,并准备数据以进行其他分析和报告。

回到顶部 »


问:AWS Glue 如何收费?

除了 AWS Glue 数据目录免费套餐,您需要针对 AWS Glue 数据目录中的元数据存储和访问支付简单月度费用。此外,您还需要针对 ETL 任务和网络爬虫的运行按小时费率付费 (按秒计),每次最少 10 分钟。如果您选择使用开发终端节点以交互式方法开发您的 ETL 代码,那么您需要针对预置开发终端节点的时间按小时费率付费 (按秒计),最少 10 分钟。有关更多详细信息,请参阅我们的定价页面。

问:AWS Glue 任务的计费何时开始,何时结束?

计费在任务安排执行后立即开始,并持续至整个任务完成。借助 AWS Glue,您只需针对任务运行的时间付费,而无需为环境预置或关闭时间付费。

回到顶部 »


问:AWS Glue 如何确保数据安全?

我们为静态数据提供服务器端加密,为动态数据提供 SSL。

问:AWS Glue 有哪些服务限制?

有关服务限制的更多信息,请参阅我们的文档

问:哪些地区提供 AWS Glue?

AWS Glue 目前在美国东部 (弗吉尼亚北部)、美国东部 (俄亥俄) 和美国西部 (俄勒冈) 地区可用,并将在未来几个月扩展到其他地区。有关详细信息,请参阅我们的定价页面。

问:为开发终端节点分配了多少 DPU (数据处理单元)?

一个开发终端节点默认预置 5 个 DPU。您可以为开发终端节点最少配置 2 个 DPU,最多配置 5 个 DPU。

问:如何扩展 AWS Glue ETL 任务的规模和性能?

您仅需指定想分配给 ETL 任务的 DPU (数据处理单元) 数量即可。一个 Glue ETL 任务至少需要 2 个 DPU。默认情况下,AWS Glue 会为每个 ETL 任务分配 10 个 DPU。

问:如何监控 AWS Glue 任务的执行情况?

AWS Glue 会提供每个任务的状态,并将所有通知推送到 Amazon CloudWatch 事件。您可以通过 CloudWatch 操作设置 SNS 通知,以接收任务失败或完成通知。

回到顶部 »