本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
读取标准存储类别中的已归档 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 Athena、Amazon Redshift Spectrum 和 Amazon 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 文档