使用 AWS Glue 导出数据 - AWS 规范指引

使用 AWS Glue 导出数据

您可以使用 AWS Glue 将 MySQL 数据归档在 Amazon S3 中,AWS Glue 是一项适用于大数据场景的无服务器分析服务。AWS Glue 由 Apache Spark 提供支持,Apache Spark 是一种广泛使用的分布式集群计算框架,支持许多数据库源。

只需在 AWS Glue 作业中使用几行代码即可将归档数据从数据库卸载到 Amazon S3。AWS Glue 提供的最大优势是水平可扩展性和按实际使用量付费模式,提高了运营效率并优化了成本。

下图展示了数据库归档的基本架构。

归档数据的五步流程。
  1. MySQL 数据库创建要在 Amazon S3 中卸载的归档或备份表。

  2. AWS Glue 作业通过以下方法之一启动:

  3. 数据库凭证是从 AWS Secrets Manager 中检索的。

  4. AWS Glue 作业使用 Java 数据库连接(JDBC)连接来访问数据库和读取表。

  5. AWS Glue 以 Parquet 格式在 Amazon S3 中写入数据,这是一种开放的、列式的、节省空间的数据格式。

配置 AWS Glue 作业

要按预期运行,AWS Glue 作业需要以下组件和配置:

  • AWS Glue 连接:这是 AWS Glue Data Catalog 对象,您可以将其附加到作业以访问数据库。一个作业可以有多个连接,用于调用多个数据库。这些连接包含安全存储的数据库凭证。

  • GlueContext:这是 SparkContext 上的自定义包装程序。GlueContext 类别提供更高阶的 API 操作来与 Amazon S3 和数据库源进行交互。它支持与 Data Catalog 集成。它还消除了对数据库连接驱动程序的依赖,数据库连接在 Glue 连接内处理。此外,GlueContext 类别提供了处理 Amazon S3 API 操作的方法,而最初的 SparkContext 类别无法做到这一点。

  • IAM 策略和角色:由于 AWS Glue 与其他 AWS 服务交互,因此您必须设置具有所需最低权限的适当角色。需要适当权限才能与 AWS Glue 交互的服务包括:

    • Amazon S3

    • AWS Secrets Manager

    • AWS Key Management Service(AWS KMS)

最佳实践

  • 对于需要卸载大量行的整个表,我们建议使用只读副本端点来提高读取吞吐量,而不会降低主写入器实例的性能。

  • 要提高用于处理作业的节点数量的效率,请在 AWS Glue 3.0 中开启自动扩缩

  • 如果 S3 存储桶是数据湖架构的一部分,我们建议通过将数据组织到物理分区来卸载数据。分区方案应基于访问模式。根据日期值进行分区是最推荐的做法之一。

  • 将数据保存为开放格式 [例如 Parquet 或优化的行列式(ORC)] 有助于将数据提供给其他分析服务,例如 Amazon Athena 和 Amazon Redshift。

  • 要使其他分布式服务对卸载的数据进行读取优化,必须控制输出文件的数量。使用少量的大文件几乎总是比使用大量小文件更有利。Spark 内置了配置文件和方法来控制部件文件的生成。

  • 顾名思义,归档数据是经常访问的数据集。为了提高存储成本效益,Amazon S3 应该过渡到价格更低的层级。可以使用以下两种方法完成:

    • 在卸载时同步过渡层:如果您事先知道卸载的数据必须在流程中进行过渡,则可以在将数据写入 Amazon S3 的同一个 AWS Glue 作业中使用 GlueContext 机制 transition_s3_path

    • 使用 S3 生命周期进行异步转换:设置 S3 生命周期规则,并设置适当的参数,以实现 Amazon S3 存储类别转换和到期。在存储桶上配置后,该配置将永久保留。

  • 在部署数据库的虚拟私有云(VPC)内创建和配置具有足够 IP 地址范围的子网。这将避免在配置大量数据处理单元(DPU)时由于网络地址不足而导致的 AWS Glue 作业失败。