Uso del formato Avro en AWS Glue
AWS Glue recupera datos de fuentes y escribe datos en destinos almacenados y transportados en varios formatos de datos. Si los datos se almacenan o se transportan en formato de datos Avro, este documento presenta las características disponibles para utilizar los datos en AWS Glue.
AWS Glue admite el uso del formato Avro. Este es un formato de datos basado en filas y orientado al rendimiento. Para obtener una introducción al formato por parte de la autoridad de normalización, consulte Documentación de Apache Avro 1.8.2
Puede utilizar AWS Glue para leer archivos Avro de Amazon S3 y de orígenes de streaming, como también para escribir archivos Avro en Amazon S3. Puede leer y escribir archivos bzip2
y gzip
que contengan archivos Avro de S3. Además, puede escribir deflate
, snappy
y xz
archivos que contengan archivos Avro. Debe configurar el comportamiento de compresión en el Parámetros de conexión S3 en lugar de en la configuración que se describe en esta página.
En la siguiente tabla se muestran las operaciones comunes de AWS Glue que admiten la opción de formato Avro.
Leer | Escritura | Lectura de streaming | Grupo de archivos pequeños | Marcadores de trabajo |
---|---|---|---|---|
Compatible | Soportado | Compatible* | No se admite | Compatible |
*Compatible con restricciones. Para obtener más información, consulte Notas y restricciones para orígenes de streaming de Avro.
Ejemplo: leer archivos o carpetas Avro de S3
Requisitos previos: necesitará las rutas de S3 (s3path
) de las carpetas o los archivos Avro que desee leer.
Configuración: en las opciones de la función, especifique format="avro"
. En sus connection_options
, utilice la clave paths
para especificar s3path
. Puede configurar la forma en que el lector interactúa con S3 en la connection_options
. Para obtener más información, consulte Opciones de formato de datos para entradas y salidas de ETL en AWS Glue: Referencia de opción de conexión de Amazon S3. Puede configurar la manera en que el lector interpreta los archivos Avro en sus format_options
. Para obtener más información, consulte Referencia de configuración de Avro.
El siguiente script de ETL de AWS Glue muestra el proceso de lectura de archivos o carpetas Avro de S3:
Ejemplo: escribir archivos y carpetas Avro en S3
Requisitos previos: necesitará un DataFrame inicializado (dataFrame
) o DynamicFrame (dynamicFrame
). También necesitará la ruta de salida S3 prevista, s3path
.
Configuración: en las opciones de la función, especifique format="avro"
. En sus connection_options
, utilice la clave paths
para especificar su s3path
. Puede modificar aún más la forma en que el escritor interactúa con S3 en las connection_options
. Para obtener más información, consulte Opciones de formato de datos para entradas y salidas de ETL en AWS Glue: Referencia de opción de conexión de Amazon S3. Puede alterar la manera en que el escritor interpreta los archivos Avro en sus format_options
. Para obtener más información, consulte Referencia de configuración de Avro.
El siguiente script de ETL de AWS Glue muestra el proceso de escritura de archivos o carpetas Avro en S3.
Referencia de configuración de Avro
Puede utilizar los siguientes valores format_options
donde las bibliotecas de AWS Glue especifiquen format="avro"
:
version
: especifica la versión del formato lector/escritor Apache Avro que se va a soportar. El valor predeterminado es 1.7. Puede especificarformat_options={"version": “1.8”}
para habilitar el tipo de lectura y escritura lógico de Avro. Para obtener más información, consulte la especificación de Apache Avro 1.7.7y la especificación de Apache Avro 1.8.2 . El conector de Apache Avro 1.8 admite las siguientes conversiones de tipo lógico:
Para el lector: en esta tabla, se muestra la conversión entre el tipo de datos de Avro (tipo lógico y tipo primitivo de Avro) y el tipo de datos DynamicFrame
de AWS Glue para las versiones 1.7 y 1.8 del lector de Avro.
Tipo de datos de Avro: Tipo lógico |
Tipo de datos de Avro: Tipo primitivo de Avro |
Tipo de datos DynamicFrame de Glue: Lector 1.7 de Avro |
Tipo de datos DynamicFrame de Glue: Lector 1.8 de Avro |
---|---|---|---|
Decimal | bytes | BINARIO | Decimal |
Decimal | fijo | BINARIO | Decimal |
Date | int | INT | Date |
Tiempo (milisegundos) | int | INT | INT |
Tiempo (microsegundos) | long | LONG | LONG |
Marca de tiempo (milisegundos) | long | LONG | Timestamp |
Marca de tiempo (microsegundos) | long | LONG | LONG |
Duración (no es un tipo lógico) | fijo de 12 | BINARIO | BINARIO |
Para el escritor: en esta tabla, se muestra la conversión entre el tipo de datos DynamicFrame
de AWS Glue y el tipo de datos de Avro para las versiones 1.7 y 1.8 del escritor de Avro.
Tipo de datos DynamicFrame de AWS Glue |
Tipo de datos de Avro: Escritor 1.7 de Avro |
Tipo de datos de Avro: Escritor 1.8 de Avro |
---|---|---|
Decimal | Cadena | decimal |
Date | Cadena | date |
Timestamp | Cadena | marca temporal (microsegundos) |
Compatibilidad entre Avro y Spark DataFrame
Para utilizar Avro desde la API de Spark DataFrame, debe instalar el complemento Spark Avro para la versión de Spark correspondiente. La versión de Spark disponible en su trabajo está determinada por la versión de AWS Glue. Para obtener más información acerca de las versiones de Spark, consulte Versiones de AWS Glue. Apache mantiene este complemento; nosotros no ofrecemos garantías específicas de compatibilidad.
En AWS Glue 2.0 se utiliza la versión 2.4.3 del complemento Spark Avro. Puede encontrar este JAR en Maven Central, consulte org.apache.spark:spark-avro_2.12:2.4.3
En AWS Glue 3.0 se utiliza la versión 3.1.1 del complemento Spark Avro. Puede encontrar este JAR en Maven Central, consulte org.apache.spark:spark-avro_2.12:3.1.1
Para incluir archivos JAR adicionales en un trabajo de ETL de AWS Glue, utilice el parámetro de trabajo --extra-jars
. Para obtener más información acerca de la configuración de parámetros de trabajos, consulte Uso de los parámetros de trabajo en los trabajos de AWS Glue. También puede configurar este parámetro en la AWS Management Console.