Régex SerDe - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Régex SerDe

La Regex SerDe utilise une expression régulière (regex) pour désérialiser les données en extrayant des groupes d'expressions régulières 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 plus d'informations, consultez Class RegexSerDe dans la documentation d'Apache Hive.

Nom de la bibliothèque de sérialisation

Le nom de la bibliothèque de sérialisation pour le Regex SerDe est. org.apache.hadoop.hive.serde2.RegexSerDe Pour plus d'informations sur le code source, consultez Class RegexSerDe dans la documentation d'Apache.

Exemple

L'exemple suivant crée une table à partir de CloudFront journaux à l'aide du RegExSerDe. Remplacez myregion s3://athena-examples-myregion/cloudfront/plaintext/avec l'identifiant de la région dans laquelle 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/';