Avro SerDe - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Avro SerDe

Utilisez l'Avro SerDe pour créer des tables Athena à partir des données Avro.

Nom de la bibliothèque de sérialisation

Le nom de la bibliothèque de sérialisation de l'Avro SerDe est. org.apache.hadoop.hive.serde2.avro.AvroSerDe Pour obtenir des informations techniques, consultez AvroSerDela documentation d'Apache.

Utilisez l'Avro SerDe

Pour des raisons de sécurité, Athena ne prend pas en charge l'utilisation avro.schema.url pour spécifier le schéma de table ; avro.schema.literal utilisez-le à la place.

Pour extraire le schéma des données au format Avro, utilisez le avro-tools-<version>.jar fichier Apache situé dans le java sous-répertoire de la version d'Avro que vous avez installée. Utilisez le getschema paramètre pour renvoyer un schéma que vous pouvez utiliser dans votre WITH SERDEPROPERTIES instruction, comme dans l'exemple suivant.

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

Pour télécharger Avro, consultez les versions d'Apache Avro. Pour télécharger Apache Avro Tools directement, consultez Apache Avro Tools Maven Repository.

Après avoir obtenu le schéma, utilisez une CREATE TABLE instruction pour créer une table Athena basée sur les données Avro sous-jacentes stockées dans Amazon S3. Pour spécifier l'Avro SerDe dans votre CREATE TABLE relevé, utilisezROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'. Spécifiez le schéma à l'aide de la WITH SERDEPROPERTIES clause, comme dans l'exemple suivant.

Note

Remplacez myregion s3://athena-examples-myregion/path/to/data/avec l'identifiant de la région dans laquelle vous exécutez Athena, par exemple,. 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/';

Exécutez l'instruction MSCK REPAIR TABLE sur la table pour actualiser les métadonnées de la partition.

MSCK REPAIR TABLE flights_avro_example;

Recherchez les 10 principales villes de départ par nombre total de départs.

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

Les données du tableau des vols proviennent des Vols fournis par le ministère américain des transports, Bureau of Transportation Statistics (Bureau des statistiques des transports). Désaturé de l'original.