Regex SerDe - Amazon Athena

Regex SerDe

Der 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 zurückgegeben NULL. 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 Klasse RegexSerDe in der Apache Hive-Dokumentation.

Name der Serialisierungsbibliothek

Der Name der Serialisierungsbibliothek für den Regex SerDe lautet org.apache.hadoop.hive.serde2.RegexSerDe. Informationen zum Quellcode finden Sie unter Klasse RegexSerDe in der Apache-Dokumentation.

Beispiel

Im folgenden Beispiel wird eine Tabelle aus CloudFront-Protokollen mit RegExSerDe erstellt. Ersetzen Sie myregion in s3://athena-examples-myregion/cloudfront/plaintext/ durch den Regionsbezeichner, in dem Sie Athena ausführen, (z. B. 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/';