

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
<a name="avro-serde"></a>

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

## Nom de la bibliothèque de sérialisation
<a name="avro-serde-library-name"></a>

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 [AvroSerDe](https://cwiki.apache.org/confluence/display/Hive/AvroSerDe)la documentation d'Apache. 

## Utilisez l'Avro SerDe
<a name="avro-serde-using"></a>

Pour des raisons de sécurité, Athena ne permet pas de spécifier le schéma de table à l’aide de `avro.schema.url`. Il est recommandé d’utiliser `avro.schema.literal`. 

Pour extraire le schéma de données au format Avro, utilisez le fichier Apache `avro-tools-{{<version>}}.jar` qui se trouve dans le sous-répertoire `java` de votre version d’Avro. Utilisez le paramètre `getschema` pour renvoyer un schéma que vous pourrez utiliser dans votre instruction `WITH SERDEPROPERTIES`, comme illustré 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](http://avro.apache.org/releases.html#Download). Pour télécharger Apache Avro Tools directement, consultez [Apache Avro Tools Maven Repository](https://mvnrepository.com/artifact/org.apache.avro/avro-tools).

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

**Note**  
{{myregion}}Remplacez-le `s3://athena-examples-{{myregion}}/path/to/data/` par 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](http://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236&amp;DB_Short_Name=On-Time) fournis par le ministère américain des transports, [Bureau of Transportation Statistics](http://www.transtats.bts.gov/) (Bureau des statistiques des transports). Désaturé de l'original.