排除 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 — 用于长期归档和数字化保存。

有关更多信息,请参阅 Amazon S3 开发人员指南中的 Amazon S3 存储类

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

通过使用存储类排除,您可以确保您的 AWS Glue 作业可以在具有跨这些存储类层的分区的表上工作。如果没有排除,则从这些层读取数据的作业将失败,并显示以下错误:AmazonS3Exception:操作对于此对象的存储类无效。

有多种不同的方法可供您在 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 操作中包含此参数。有关更多信息,请参阅 Table 结构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 (应用)