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

Bienenstock JSON SerDe

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

Anmerkung

Das SerDe erwartet, dass sich jedes JSON Dokument in einer einzigen Textzeile befindet, ohne dass die Felder im Datensatz durch Zeilenabschlusszeichen voneinander getrennt werden. Wenn der JSON Text ein hübsches Druckformat hat, erhalten Sie möglicherweise eine Fehlermeldung wie HIVE_ CURSOR _ERROR: Zeile ist kein gültiges JSON Objekt oder HIVE_ CURSOR _ERROR:: Unerwartet JsonParseException end-of-input: erwartetes Schließzeichen für OBJECT den Versuch, die Tabelle abzufragen, nachdem Sie sie erstellt haben. Weitere Informationen finden Sie unter JSONDatendateien in der SerDe OpenX-Dokumentation von. GitHub

In der folgenden DDL Beispielanweisung wird Hive verwendet JSON SerDe , um eine Tabelle auf der Grundlage von Beispieldaten für Online-Werbung zu erstellen. Ersetzen Sie in der LOCATION Klausel den myregion s3://amzn-s3-demo-bucket.elasticmapreduce/samples/hive-ads/tables/impressionsmit der 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 an JSON 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.

Lädt die Tabelle für die Abfrage

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