

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Avro SerDe
<a name="avro-serde"></a>

Verwenden Sie Avro SerDe , um Athena-Tabellen aus Avro-Daten zu erstellen.

## Name der Serialisierungsbibliothek
<a name="avro-serde-library-name"></a>

Der Name der Serialisierungsbibliothek für den Avro lautet. SerDe `org.apache.hadoop.hive.serde2.avro.AvroSerDe` Technische Informationen finden Sie [AvroSerDe](https://cwiki.apache.org/confluence/display/Hive/AvroSerDe)in der Apache-Dokumentation. 

## Verwenden Sie den Avro SerDe
<a name="avro-serde-using"></a>

Aus Sicherheitsgründen unterstützt Athena die Verwendung von `avro.schema.url` zur Angabe des Tabellenschemas nicht; verwenden Sie stattdessen `avro.schema.literal`. 

Um ein Schema aus Daten im Avro-Format zu extrahieren, verwenden Sie die `avro-tools-<version>.jar`-Apache-Datei, die sich im `java`-Unterverzeichnis Ihrer installierten Avro-Version befindet. Verwenden Sie den `getschema`-Parameter, um ein Schema zurückzugeben, das Sie in Ihrer `WITH SERDEPROPERTIES`-Anweisung verwenden können, wie im folgenden Beispiel.

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

Informationen zum Herunterladen von Avro finden Sie unter [Apache Avro Releases](http://avro.apache.org/releases.html#Download). Informationen zum direkten Herunterladen der Apache Avro-Tools finden Sie unter [Apache Avro Tools Maven Repository](https://mvnrepository.com/artifact/org.apache.avro/avro-tools).

Nachdem Sie das Schema abgerufen haben, verwenden Sie eine `CREATE TABLE`-Anweisung, um eine Athena-Tabelle basierend auf den zugrunde liegenden Avro-Daten zu erstellen, die in Amazon S3 gespeichert sind. Um den Avro SerDe in Ihrem `CREATE TABLE` Kontoauszug zu spezifizieren, verwenden Sie. `ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'` Geben Sie das Schema mithilfe der `WITH SERDEPROPERTIES`-Klausel an, wie im folgenden Beispiel dargestellt.

**Anmerkung**  
Ersetzen Sie *myregion* in `s3://athena-examples-myregion/path/to/data/` durch die Regionskennung, in der Sie Athena ausführen, zum Beispiel. `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/';
```

Führen Sie die `MSCK REPAIR TABLE`-Anweisung auf der Tabelle aus, um die Partitionsmetadaten zu aktualisieren.

```
MSCK REPAIR TABLE flights_avro_example;
```

Fragen Sie die am häufigsten genutzten 10 Abflugstädte, gemessen an der Anzahl der Abflüge, ab.

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

**Anmerkung**  
Die Flugtabellendaten stammen aus [Flügen](http://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236&amp;DB_Short_Name=On-Time), die vom US-Verkehrsministerium, [Bureau of Transportation Statistics](http://www.transtats.bts.gov/), bereitgestellt werden. Entsättigt vom Original.