Hive-JSON SerDe - Amazon Athena

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

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_CURSOR_ERROR: Row is not a valid JSON Object oder HIVE_CURSOR_ERROR:: 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 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 myregion in s3://DOC-EXAMPLE-BUCKET.elasticmapreduce/samples/hive-ads/tables/impressions durch die Kennung der Region, in der Sie Athena ausführen (zum Beispiel 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://DOC-EXAMPLE-BUCKET.elasticmapreduce/samples/hive-ads/tables/impressions';

Angabe von Zeitstempelformaten mit der Hive-JSON-Datei SerDe

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 in der Apache-Hive-Dokumentation.

Laden der Tabelle zum Abfragen

Führen Sie nach dem Erstellen der Tabelle MSCK REPAIR TABLE aus, um die Tabelle zu laden und sie von Athena aus abfragen zu können:

MSCK REPAIR TABLE impressions

Logs abfragen CloudTrail

Sie können Hive JSON verwenden, um Logs SerDe abzufragen CloudTrail . Weitere Informationen und CREATE TABLE-Beispielanweisungen finden Sie unter Logs abfragen AWS CloudTrail.