Amazon Glue 类型系统 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Glue 类型系统

Amazon Glue 使用多类型系统为数据系统提供多功能接口,这些数据系统以截然不同的方式存储数据。本文档消除了 Amazon Glue 类型系统和数据标准的歧义。

Amazon Glue Data Catalog 类型

Data Catalog 是存储在各种数据系统中的表和字段的注册表,即元存储。当 Amazon Glue 组件(例如 Amazon Glue 爬网程序和使用 Spark 作业的 Amazon Glue)写入 Data Catalog 时,它们会使用内部类型系统来跟踪字段类型。这些值显示在 Amazon Glue 控制台中表架构的数据类型列中。这种类型系统基于 Apache Hive 的类型系统。有关 Apache Hive 类型系统的更多信息,请参阅 Apache Hive 维基中的类型。有关特定类型和支持的更多信息,作为 Schema Builder 的一部分,Amazon Glue 控制台中提供了示例。

验证、兼容性和其他使用

Data Catalog 不验证写入类型字段的类型。当 Amazon Glue 组件读取和写入 Data Catalog 时,它们将相互兼容。AmazonGlue 组件还旨在保持与 Hive 类型的高度兼容性。但是,Amazon Glue 组件不能保证与所有 Hive 类型兼容。这允许在处理 Data Catalog 中的表时与 Athena DDL 等工具进行互操作。

由于 Data Catalog 不验证类型,其他服务可能会使用数据目录来跟踪使用严格符合 Hive 类型系统的系统或任何其他系统的类型。

使用 Spark 脚本的 Amazon Glue 中的类型

当使用 Spark 脚本的 Amazon Glue 解释或转换数据集时,我们会提供 DynamicFrame,脚本中使用的数据集的内存表示形式。DynamicFrame 的目标与 Spark DataFrame 的目标类似:它会为数据集建模,这样 Spark 就可以对数据进行调度和执行转换。我们通过提供 toDFfromDF 方法来保证 DynamicFrame 的类型表示形式与 DataFrame 相互兼容。

如果可以推断出类型信息或将其提供给 DataFrame,则可以推断出类型信息或将其提供给 DynamicFrame,除非另有记录。当我们为特定数据格式提供优化的读取器或写入器时,如果 Spark 可以读取或写入您的数据,我们提供的读取器和写入器也可以,会受记录限制。有关读取器和写入器的更多信息,请参阅 Amazon Glue for Spark 中的输入和输出的数据格式选项

选择类型

DynamicFrames 提供在数据集中为字段建模的机制,这些字段的值在磁盘上的不同行中可能具有不一致的类型。例如,一个字段可以在某些行中将数字存储为字符串,在其他行中则存储为整数。此机制是一种名为 Choice 的内存中类型。我们提供转换(如 ResolveChoice 方法),以便将 Choice 列解析为具体类型。AmazonGlue ETL 不会在正常操作过程中将选择类型写入 Data Catalog;选择类型仅存在于数据集的 DynamicFrame 内存模型的上下文中。有关选择类型的使用示例,请参阅 代码示例:使用 ResolveChoice、Lambda 和 ApplyMapping 进行数据准备

Amazon Glue 爬网程序类型

爬网程序旨在为您的数据集生成一致、可用的架构,然后将其存储在 Data Catalog 中供其他 Amazon Glue 组件和 Athena 使用。爬网程序处理 Data Catalog 上一节中描述的类型,Amazon Glue Data Catalog 类型。为了在“选择”类型场景(其中一列包含两种或更多种类型的值)中生成可用类型,爬网程序将创建一种为潜在类型建模的 struct 类型。