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.
Regex SerDe
Die Regex SerDe verwendet einen regulären Ausdruck (Regex), um Daten zu deserialisieren, indem Regex-Gruppen in Tabellenspalten extrahiert werden.
Wenn eine Zeile in den Daten nicht mit dem Regex übereinstimmt, werden alle Spalten in der Zeile als NULL
zurückgegeben. Wenn eine Zeile mit dem Regex übereinstimmt, aber weniger Gruppen hat als erwartet, sind die fehlenden Gruppen NULL
. Wenn eine Zeile in den Daten mit dem Regex übereinstimmt, aber mehr Spalten als Gruppen in dem Regex enthält, werden die zusätzlichen Spalten ignoriert.
Weitere Informationen finden Sie unter Class in der Apache Hive-Dokumentation. RegexSerDe
Name der Serialisierungsbibliothek
Der Name der Serialisierungsbibliothek für die SerDe Regex lautet. org.apache.hadoop.hive.serde2.RegexSerDe
Informationen zum Quellcode finden Sie unter Class RegexSerDe
Beispiel
Das folgende Beispiel erstellt eine Tabelle aus CloudFront Protokollen mithilfe von RegExSerDe. Ersetzen myregion
s3://athena-examples-
mit der Regionskennung, in der Sie Athena ausführen (z. B.myregion
/cloudfront/plaintext/s3://athena-examples-us-west-1/cloudfront/plaintext/
).
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, os STRING, Browser STRING, BrowserVersion STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$" ) LOCATION 's3://athena-examples-
myregion
/cloudfront/plaintext/';