AWS Glue utiliza sistemas de tipos múltiples para proporcionar una interfaz versátil sobre sistemas de datos que almacenan datos de formas muy diferentes. Este documento desambigua los sistemas de tipos de AWS Glue y los estándares de datos.
Tipos de catálogos de datos de AWS Glue
El catálogo de datos es un registro de tablas y campos almacenados en diferentes sistemas de datos, un metaalmacén. Cuando los componentes de AWS Glue, como los rastreadores de AWS Glue y los trabajos de AWS Glue con Spark, escriben en el catálogo de datos, lo hacen con un sistema de tipos interno para rastrear los tipos de campos. Estos valores se muestran en la columna Tipo de datos del esquema de tablas de la consola de AWS Glue. Este sistema de tipos se basa en el sistema de tipos de Apache Hive. Para obtener más información sobre el sistema de tipos de Apache Hive, consulte Tipos
Validación, compatibilidad y otros usos
El catálogo de datos no valida los tipos escritos en campos de tipos. Cuando los componentes de AWS Glue lean y escriban en el catálogo de datos, serán compatibles entre sí. Los componentes de AWS Glue también tienen como objetivo preservar un alto grado de compatibilidad con los tipos de Hive. Sin embargo, los componentes de AWS Glue no garantizan la compatibilidad con todos los tipos de Hive. Esto permite la interoperabilidad con herramientas como Athena DDL cuando se trabaja con tablas del catálogo de datos.
Dado que el catálogo de datos no valida los tipos, otros servicios pueden usarlo para rastrear los tipos mediante sistemas que se ajusten estrictamente al sistema de tipos de Hive o a cualquier otro sistema.
Tipos en los scripts de AWS Glue con Spark
Cuando un script de AWS Glue con Spark interpreta o transforma un conjunto de datos, proporcionamos DynamicFrame
, una representación en memoria del conjunto de datos tal como se usa en el script. El objetivo de un DynamicFrame
es similar al del Spark DataFrame
: modela tu conjunto de datos para que Spark pueda programar y ejecutar transformaciones en los datos. Garantizamos que la representación de tipos de DynamicFrame
es intercompatible con DataFrame
y proporciona los métodos toDF
y fromDF
.
Si la información de tipos se puede inferir o proporcionar a un DataFrame
, se puede inferir o proporcionar a un DynamicFrame
, a menos que se documente lo contrario. Cuando proporcionamos lectores o escritores optimizados para formatos de datos específicos, si Spark puede leer o escribir sus datos, los lectores y escritores que proporcionemos podrán hacerlo, con sujeción a las limitaciones documentadas. Para obtener más información acerca de los lectores y los escritores, consulte Opciones de formato de datos para las entradas y las salidas en AWS Glue para Spark.
El tipo Choice
Los DynamicFrames
proporcionan un mecanismo para modelar los campos de un conjunto de datos cuyo valor puede tener tipos inconsistentes en el disco en todas las filas. Por ejemplo, un campo puede contener un número almacenado como cadena en determinadas filas y un entero en otras. Este mecanismo es de un tipo en memoria denominado Choice
. Proporcionamos transformaciones, como el método ResolveChoice
, para resolver las columnas Choice en un tipo concreto. El proceso de ETL de AWS Glue no escribirá el tipo Choice en el catálogo de datos durante su funcionamiento normal; los tipos Choice solo existen en el contexto de los modelos de memoria de los conjuntos de datos de DynamicFrame. Para ver un ejemplo del uso del tipo Choice, consulte Ejemplo de código: Preparación de datos con ResolveChoice, Lambda y ApplyMapping.
Tipos de rastreadores de AWS Glue
El objetivo de los rastreadores es crear un esquema coherente y utilizable para el conjunto de datos y, a continuación, almacenarlo en el catálogo de datos para usarlo en otros componentes de AWS Glue y Athena. Los rastreadores se encargan de los tipos, como se describe en la sección anterior sobre el catálogo de datos, Tipos de catálogos de datos de AWS Glue. Para generar un tipo utilizable en los escenarios de tipo “Choice”, en los que una columna contiene valores de dos o más tipos, los rastreadores crearán un tipo struct
que modele los tipos potenciales.