排除 Amazon S3 存储类 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

排除 Amazon S3 存储类

如果您要运行从 Amazon Simple Storage Service (Amazon S3) 读取文件或分区的 AWS Glue ETL 作业,则可以排除某些 Amazon S3 存储类类型。

Amazon S3 中提供以下存储类:

  • STANDARD — 用于频繁访问数据的通用存储。

  • INTELLIGENT_TIERING — 用于具有未知或访问模式不断变化的数据。

  • STANDARD_IAONEZONE_IA — 用于长期存在但不常访问的数据。

  • GLACIERDEEP_ARCHIVEREDUCED_REDUNDANCY — 用于长期归档和数字化保存。

有关更多信息,请参阅 AmazonS3存储等级Amazon S3 开发者指南.

本节中的示例向您展示了如何排除 GLACIERDEEP_ARCHIVE 存储类。这些类允许您列出文件,但除非文件已还原,否则它们不会让您读取文件。(如需了解更多信息,请参阅 还原存档对象Amazon S3 开发者指南。)

通过使用存储类排除,您可以确保您的 AWS Glue 作业可以在具有跨这些存储类层的分区的表上工作。如果没有排除,从这些层读取数据的作业将失败,因为以下错误: AmazonS3Exception: The operation is not valid for the object's storage class.

有多种不同的方法可供您在 AWS Glue 中筛选 Amazon S3 存储类。

创建动态帧时排除 Amazon S3 存储类

要在创建动态帧时排除 Amazon S3 存储类,请使用 additionalOptions 中的 excludeStorageClasses。AWS Glue 自动使用自己的 Amazon S3 Lister 实施列出和排除与指定存储类对应的文件。

以下 Python 和 Scala 示例显示了在创建动态帧时如何排除 GLACIERDEEP_ARCHIVE 存储类。

Python 示例:

glueContext.create_dynamic_frame.from_catalog( database = "my_database", tableName = "my_table_name", redshift_tmp_dir = "", transformation_ctx = "my_transformation_context", additional_options = { "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"] } )

Scala 示例:

val* *df = glueContext.getCatalogSource( nameSpace, tableName, "", "my_transformation_context", additionalOptions = JsonOptions( Map("excludeStorageClasses" -> List("GLACIER", "DEEP_ARCHIVE")) ) ).getDynamicFrame()

在数据目录表上排除 Amazon S3 存储类

您可以将 AWS Glue ETL 作业使用的存储类排除指定为 AWS Glue 数据目录 中的表参数。您可以使用 AWS Command Line Interface (AWS CLI) 或以编程方式使用 API 在 CreateTable 操作中包含此参数。有关更多信息,请参阅 表结构CreateTable.

您还可以在 AWS Glue 控制台上指定排除的存储类。

排除 Amazon S3 存储类(控制台)

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Glue 控制台:https://console.amazonaws.cn/glue/

  2. 在左侧的导航窗格中,选择 Tables (表)

  3. 选择列表中的表名称,然后选择 Edit table (编辑表)

  4. Table properties (表属性) 中,添加 excludeStorageClasses 作为键,添加 [\"GLACIER\",\"DEEP_ARCHIVE\"] 作为值。

  5. 选择 Apply