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

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

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

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

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

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

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

以下 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 数据目录中的表参数。您可以将此参数包含在CreateTable操作,或使用 API 以编程方式使用 AWS Command Line Interface (AWS CLI) 操作。有关更多信息,请参阅 Table 结构CreateTable

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

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

  1. 登录 AWS 管理控制台,并打开 AWS Glue 控制台,地址为:https://console.aws.amazon.com/glue/

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

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

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

  5. 选择 Apply