Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

El SerDe de Avro

Modo de enfoque
El SerDe de Avro - Amazon Athena

Utilice el SerDe de Avro para crear tablas de Athena a partir de los datos de Avro.

Nombre de la biblioteca de serialización

El nombre de la biblioteca de serialización del SerDe de Avro es org.apache.hadoop.hive.serde2.avro.AvroSerDe. Para obtener información técnica, consulte AvroSerDe en la documentación de Apache.

Uso del SerDe de Avro

Por motivos de seguridad, Athena no admite el uso de avro.schema.url para especificar el esquema de la tabla. Utilice avro.schema.literal en su lugar.

Para extraer el esquema de los datos en formato Avro, utilice el archivo avro-tools-<version>.jar de Apache que se encuentra en el subdirectorio java de la versión de Avro instalada. Use el parámetro getschema para devolver un esquema que pueda utilizar en la instrucción WITH SERDEPROPERTIES, como en el siguiente ejemplo.

java -jar avro-tools-1.8.2.jar getschema my_data.avro

Para descargar Avro, consulte la página que contiene las versiones de Apache Avro. Para descargar Apache Avro Tools directamente, consulte la página del repositorio Maven de Apache Avro Tools.

Una vez obtenido el esquema, utilice una instrucción CREATE TABLE para crear una tabla de Athena basada en los datos de Avro subyacentes almacenados en Amazon S3. Para especificar el SerDe de Avro en la instrucción CREATE TABLE, utilice ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'. Especifique el esquema mediante la cláusula WITH SERDEPROPERTIES, como se muestra en el siguiente ejemplo.

nota

Reemplace myregion en s3://athena-examples-myregion/path/to/data/ por el identificador de región donde se ejecuta Athena, por ejemplo, s3://athena-examples-us-west-1/path/to/data/.

CREATE EXTERNAL TABLE flights_avro_example ( yr INT, flightdate STRING, uniquecarrier STRING, airlineid INT, carrier STRING, flightnum STRING, origin STRING, dest STRING, depdelay INT, carrierdelay INT, weatherdelay INT ) PARTITIONED BY (year STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' WITH SERDEPROPERTIES ('avro.schema.literal'=' { "type" : "record", "name" : "flights_avro_subset", "namespace" : "default", "fields" : [ { "name" : "yr", "type" : [ "null", "int" ], "default" : null }, { "name" : "flightdate", "type" : [ "null", "string" ], "default" : null }, { "name" : "uniquecarrier", "type" : [ "null", "string" ], "default" : null }, { "name" : "airlineid", "type" : [ "null", "int" ], "default" : null }, { "name" : "carrier", "type" : [ "null", "string" ], "default" : null }, { "name" : "flightnum", "type" : [ "null", "string" ], "default" : null }, { "name" : "origin", "type" : [ "null", "string" ], "default" : null }, { "name" : "dest", "type" : [ "null", "string" ], "default" : null }, { "name" : "depdelay", "type" : [ "null", "int" ], "default" : null }, { "name" : "carrierdelay", "type" : [ "null", "int" ], "default" : null }, { "name" : "weatherdelay", "type" : [ "null", "int" ], "default" : null } ] } ') STORED AS AVRO LOCATION 's3://athena-examples-myregion/flight/avro/';

Ejecute la instrucción MSCK REPAIR TABLE en la tabla para actualizar los metadatos de partición.

MSCK REPAIR TABLE flights_avro_example;

Consulte las 10 primeras ciudades de salida en función del número total de salidas.

SELECT origin, count(*) AS total_departures FROM flights_avro_example WHERE year >= '2000' GROUP BY origin ORDER BY total_departures DESC LIMIT 10;
nota

Los datos de la tabla de vuelos provienen de Vuelos proporcionados por la Oficina de Estadísticas del Transporte del Departamento de Transporte de los Estados Unidos. Desaturado del original.

En esta página

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.