SerDe Regex - Amazon Athena

SerDe Regex

SerDe Regex utilizza un'espressione regolare (regex) per deserializzare i dati estraendo gruppi regex in colonne di tabella.

Se una riga nei dati non corrisponde a regex, tutte le colonne nella riga vengono restituite come NULL. Se una riga corrisponde a regex ma ha meno gruppi del previsto, i gruppi mancanti sono NULL. Se una riga nei dati corrisponde a regex ma contiene più colonne rispetto ai gruppi in regex, le colonne aggiuntive vengono ignorate.

Per ulteriori informazioni, consulta Classe RegexSerDe nella documentazione di Apache Hive.

Nome della libreria di serializzazione

Il nome della libreria di serializzazione per Regex SerDe è org.apache.hadoop.hive.serde2.RegexSerDe. Per informazioni sul codice sorgente, consultare Classe RegexSerDe nella documentazione Apache.

Esempio

Nell'esempio seguente viene creata una tabella dai log CloudFront utilizzando RegexSerDe. Sostituire myregion in s3://athena-examples-myregion/cloudfront/plaintext/ con l'identificativo della Regione in cui si esegue Athena (ad esempio 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/';