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