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