本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
排除 Amazon S3 存储类
如果您要运行从 Amazon Simple Storage Service (Amazon S3) 读取文件或分区的 AWS Glue ETL 作业,则可以排除某些 Amazon S3 存储类类型。
Amazon S3 中提供以下存储类:
-
STANDARD
— 用于频繁访问数据的通用存储。 -
INTELLIGENT_TIERING
— 用于具有未知或访问模式不断变化的数据。 -
STANDARD_IA
和ONEZONE_IA
— 用于长期存在但不常访问的数据。 -
GLACIER
、DEEP_ARCHIVE
和REDUCED_REDUNDANCY
— 用于长期归档和数字化保存。
有关更多信息,请参阅 AmazonS3存储等级 在 Amazon S3 开发者指南.
本节中的示例向您展示了如何排除 GLACIER
和 DEEP_ARCHIVE
存储类。这些类允许您列出文件,但除非文件已还原,否则它们不会让您读取文件。(如需了解更多信息,请参阅 还原存档对象
通过使用存储类排除,您可以确保您的 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 示例显示了在创建动态帧时如何排除 GLACIER
和 DEEP_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
操作中包含此参数。有关更多信息,请参阅 表结构
您还可以在 AWS Glue 控制台上指定排除的存储类。
排除 Amazon S3 存储类(控制台)
-
登录 AWS 管理控制台并通过以下网址打开 AWS Glue 控制台:https://console.amazonaws.cn/glue/
。 -
在左侧的导航窗格中,选择 Tables (表)。
-
选择列表中的表名称,然后选择 Edit table (编辑表)。
-
在 Table properties (表属性) 中,添加
excludeStorageClasses
作为键,添加[\"GLACIER\",\"DEEP_ARCHIVE\"]
作为值。 -
选择 Apply。