View a markdown version of this page

读取标准存储类别中的已归档 S3 对象 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

读取标准存储类别中的已归档 S3 对象

使用 AWS Glue

从 MySQL 卸载到 Amazon S3 的数据保留了关系数据库管理系统(RDBMS)典型的相同结构刚性和一致性。

AWS Glue 爬网程序会爬取 S3 对象,推断数据类型,并将表元数据创建为外部表 DDL。配置爬网程序作业时,使用 Amazon S3 作为源,并指定创建所有数据文件的 S3 前缀位置。配置包含以下内容:

  • 爬网程序运行选项

  • 可选的表前缀首选项

  • 用于创建表的目标数据库

  • 具有所需权限的 IAM 角色

在您调用作业后,它将扫描数据以推断架构,并将其作为 AWS Glue 表保存在 AWS Glue Data Catalog 中。AWS Glue 表本质上是外部表,可以使用 SQL 语句进行查询,就像使用 Amazon AthenaAmazon Redshift SpectrumAmazon EMR 上的 Apache Hive 等分析服务查询普通数据库表一样。有关爬网程序的更多信息,请参阅 AWS Glue 文档

对于指定了列标头的 .csv 文件,生成的表列名将反映相同的字段名。系统会根据数据对象中的值推断数据类型。

对于 Parquet 文件,架构保留在数据本身中,生成的表将反映相同的字段名称和数据类型。

或者,您可以在 Athena 内手动运行 DDL,以使用所需的列名和数据类型创建表定义。这将在 Data Catalog 内创建表定义。有关创建 Athena 表的更多信息,请参阅 Amazon Athena 文档

注意:如果 CSV 文件中缺少标头行,爬网程序会将字段名称创建为通用 c_0、c_1、c_2、...

使用 Amazon S3 Select

您可以使用 Amazon S3 Select 通过 SQL 表达式以编程方式读取 S3 对象。API 操作可以通过使用 AWS CLI 命令 select-object-content 来调用,也可以使用诸如 Boto3 之类的 SDK 并从 Python 中调用操作 select_object_content 来调用。

API 操作支持 SQL 语句作为参数,并且只能读取 JSON 和 Parquet 类型的文件。输出可以重定向为输出文件。

为每个 S3 对象调用这些操作。对于多个文件,以递归方式运行操作。

有关使用 AWS CLI 运行操作的更多信息,请参阅 AWS CLI 文档。有关使用 Python SDK Boto3 运行 S3 Select 的更多信息,请参阅 Boto3 文档