

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.

# Hive-JSON SerDe
<a name="hive-json-serde"></a>

Das Hive-JSON SerDe wird häufig verwendet, um JSON-Daten wie Ereignisse zu verarbeiten. Diese Ereignisse werden als einzeilige Zeichenfolgen aus JSON-codiertem Text dargestellt, die jeweils durch eine neue Zeile voneinander getrennt sind. Das Hive-JSON SerDe erlaubt keine doppelten Schlüssel `map` oder `struct` Schlüsselnamen.

**Anmerkung**  
Das SerDe erwartet, dass sich jedes JSON-Dokument in einer einzigen Textzeile ohne Zeilenabschlusszeichen befindet, die die Felder im Datensatz trennen. Wenn der JSON-Text ein hübsches Druckformat hat, erhalten Sie möglicherweise eine Fehlermeldung wie HIVE\$1CURSOR\$1ERROR: Row is not a valid JSON Object oder HIVE\$1CURSOR\$1ERROR:: Unerwartet JsonParseException end-of-input: erwarteter Schließpunkt für OBJECT, wenn Sie versuchen, die Tabelle nach ihrer Erstellung abzufragen. Weitere Informationen finden Sie unter [JSON-Datendateien](https://github.com/rcongiu/Hive-JSON-Serde#json-data-files) in der SerDe OpenX-Dokumentation unter GitHub. 

In der folgenden DDL-Beispielanweisung wird Hive-JSON verwendet, SerDe um eine Tabelle auf der Grundlage von Beispieldaten für Online-Werbung zu erstellen. Ersetzen Sie in der `LOCATION` Klausel das *myregion* in `s3://amzn-s3-demo-bucket.elasticmapreduce/samples/hive-ads/tables/impressions` durch die Regionskennung, in der Sie Athena ausführen (z. B.`s3://us-west-2.elasticmapreduce/samples/hive-ads/tables/impressions`).

```
CREATE EXTERNAL TABLE impressions (
    requestbegintime string,
    adid string,
    impressionid string,
    referrer string,
    useragent string,
    usercookie string,
    ip string,
    number string,
    processid string,
    browsercookie string,
    requestendtime string,
    timers struct
                <
                 modellookup:string, 
                 requesttime:string
                >,
    threadid string, 
    hostname string,
    sessionid string
)   
PARTITIONED BY (dt string)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://amzn-s3-demo-bucket.elasticmapreduce/samples/hive-ads/tables/impressions';
```

## Geben Sie Zeitstempelformate mit dem Hive-JSON an SerDe
<a name="hive-json-serde-timestamp-formats"></a>

Um Zeitstempelwerte aus der Zeichenfolge zu analysieren, können Sie das Unterfeld `WITH SERDEPROPERTIES` zur Klausel `ROW FORMAT SERDE` hinzufügen und es verwenden, um den Parameter `timestamp.formats` anzugeben. Geben Sie im Parameter eine durch Kommas getrennte Liste mit einem oder mehreren Zeitstempelmustern an, wie im folgenden Beispiel:

```
...
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
WITH SERDEPROPERTIES ("timestamp.formats"="yyyy-MM-dd'T'HH:mm:ss.SSS'Z',yyyy-MM-dd'T'HH:mm:ss")
...
```

Weitere Informationen finden Sie unter [Zeitstempel](https://cwiki.apache.org/confluence/display/hive/languagemanual+types#LanguageManualTypes-TimestampstimestampTimestamps) in der Apache-Hive-Dokumentation.

## Tabelle zum Abfragen laden
<a name="hive-json-serde-loading-the-table"></a>

Führen Sie nach dem Erstellen der Tabelle [MSCK REPAIR TABLE](msck-repair-table.md) aus, um die Tabelle zu laden und sie von Athena aus abfragen zu können:

```
MSCK REPAIR TABLE impressions
```

## Logs abfragen CloudTrail
<a name="hive-json-serde-querying-cloud-trail-logs"></a>

Sie können Hive JSON verwenden, um CloudTrail Logs SerDe abzufragen. Weitere Informationen und `CREATE TABLE`-Beispielanweisungen finden Sie unter [AWS CloudTrail Logs abfragen](cloudtrail-logs.md).