一般性问题

问:什么是 AWS Glue?

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

问:如何开始使用 AWS Glue?

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

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

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

问:何时应使用 AWS Glue?

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

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

AWS Glue 为以下位置存储的数据提供原生支持:Amazon AuroraAmazon RDS for MySQLAmazon RDS for OracleAmazon RDS for PostgreSQLAmazon RDS for SQL ServerAmazon DynamoDBAmazon RedshiftAmazon S3,以及 Amazon EC2 上运行的 Virtual Private Cloud (Amazon VPC) 中的 MySQL、Oracle、Microsoft SQL Server 和 PostgreSQL 数据库。您可以从 Amazon AthenaAmazon EMRAmazon Redshift Spectrum 轻松访问存储在 AWS Glue 数据目录中的元数据。您还可以编写自定义 Scala 或 Python 代码,并在 AWS Glue ETL 作业中导入自定义库和 Jar 文件,以访问 AWS Glue 原生不支持的数据源。有关导入自定义库的更多详细信息,请参阅我们的文档

AWS Glue 数据目录

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

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

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

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

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

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

问:什么是 AWS Glue 抓取程序?

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

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

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

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

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

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

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

提取、转换、加载 (ETL)

问:我可以使用哪种编程语言为 AWS Glue 编写 ETL 代码?

您可以使用 Scala 或 Python。

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

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

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

支持。您可以将自定义 Python 库和 Jar 文件导入 AWS Glue ETL 作业。有关更多详细信息,请在此处参阅我们的文档。

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

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

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

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

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

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

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

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

问:AWS Glue 如何处理错误?

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

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

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

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

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

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

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

AWS 产品集成

问:何时应使用 AWS Glue?何时应使用 AWS Data Pipeline?

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

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

此外,AWS Glue ETL 作业均使用 Scala 或 Python 语言。如果您的使用案例要求您使用 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 Data Analytics?

Amazon Kinesis Data 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 地区表,了解 AWS Glue 服务在不同地区的具体提供情况。

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

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

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

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

问:如何监控 AWS Glue 作业的执行情况?

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

了解有关 AWS Glue 定价的更多信息

访问定价页面
准备好开始构建了吗?
开始使用 AWS Glue
还有更多问题?
联系我们