SerDe de Regex
SerDe de Regex utiliza una expresión regular (regex) para deserializar datos extrayendo grupos de expresiones regulares en columnas de tabla.
Si una fila de los datos no coincide con la expresión regular, todas las columnas de la fila se devuelven como NULL
. Si una fila coincide con la expresión regular pero tiene menos grupos de los esperados, los grupos que faltan son NULL
. Si una fila de los datos coincide con la expresión regular pero tiene más columnas que grupos en la expresión regular, se ignoran las columnas adicionales.
Para obtener más información, consulte Class RegexSerDe
Nombre de la biblioteca de serialización
El nombre de la biblioteca de serialización de SerDe de Regex es org.apache.hadoop.hive.serde2.RegexSerDe
. Para obtener información sobre el código fuente, consulte Class RegexSerDe
Ejemplo
En el ejemplo siguiente se crea una tabla a partir de registros de CloudFront mediante RegExSerDe. Reemplace myregion
en s3://athena-examples-
por el identificador de región donde se ejecuta Athena (por ejemplo, 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/';