SerDe Regex - Amazon Athena

SerDe Regex

Le SerDe Regex utilise une expression régulière (regex) pour désérialiser les données en extrayant des groupes d'expression régulière dans des colonnes de table.

Si une ligne des données ne correspond pas à l'expression régulière, toutes les colonnes de la ligne sont renvoyées comme NULL. Si une ligne correspond à l'expression rationnelle mais a moins de groupes que prévu, les groupes manquants sont NULL. Si une ligne des données correspond à l'expression régulière mais contient plus de colonnes que de groupes dans l'expression régulière, les colonnes supplémentaires sont ignorées.

Pour de plus amples informations, veuillez consulter Class RegexSerDe dans la documentation Apache Hive.

Nom de la bibliothèque de sérialisation

La bibliothèque de sérialisation du SerDe Regex est nommée org.apache.hadoop.hive.serde2.RegexSerDe. Pour plus d’informations sur le code source, consultez Class RegexSerDe dans la documentation Apache.

Exemple

L'exemple suivant crée une table à partir de journaux CloudFront à l'aide de RegExSerDe. Remplacez myregion dans s3://athena-examples-myregion/cloudfront/plaintext/ par l'identifiant de région dans lequel vous exécutez Athena (par exemple, 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/';