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 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

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.

Tabelle zum Abfragen laden

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 CloudTrail Logs SerDe abzufragen. Weitere Informationen und CREATE TABLE-Beispielanweisungen finden Sie unter AWS CloudTrail Logs abfragen.