

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

# 读取标准存储类别中的已归档 S3 对象
<a name="read-s3-standard-storage-class"></a>

**使用 AWS Glue**

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

[AWS Glue 爬网程序](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)会爬取 S3 对象，推断数据类型，并将表元数据创建为外部表 DDL。配置爬网程序作业时，使用 Amazon S3 作为源，并指定创建所有数据文件的 S3 前缀位置。配置包含以下内容：
+ 爬网程序运行选项
+ 可选的表前缀首选项
+ 用于创建表的目标数据库
+ 具有所需权限的 IAM 角色

在您调用作业后，它将扫描数据以推断架构，并将其作为 [AWS Glue 表](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html)保存在 [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) 中。AWS Glue 表本质上是外部表，可以使用 SQL 语句进行查询，就像使用 [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)、[Amazon Redshift Spectrum](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum.html) 和 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) 上的 Apache Hive 等分析服务查询普通数据库表一样。有关爬网程序的更多信息，请参阅 [AWS Glue 文档](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)。

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

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

或者，您可以在 Athena 内手动运行 DDL，以使用所需的列名和数据类型创建表定义。这将在 Data Catalog 内创建表定义。有关创建 Athena 表的更多信息，请参阅 [Amazon Athena 文档](https://docs.aws.amazon.com/athena/latest/ug/creating-tables.html)。

**注意：**如果 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 文档](https://docs.aws.amazon.com/cli/latest/reference/s3api/select-object-content.html)。有关使用 Python SDK Boto3 运行 S3 Select 的更多信息，请参阅 [Boto3 文档](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.select_object_content)。