Regex SerDe
O Regex SerDe usa uma expressão regular (regex) para desserializar dados extraindo grupos regex em colunas de tabela.
Se uma linha nos dados não corresponder à regex, todas as colunas na linha serão retornadas como NULL
. Se uma linha corresponder à regex, mas tiver menos grupos do que o esperado, os grupos ausentes serão NULL
. Se uma linha nos dados corresponder à regex, mas tiver mais colunas do que grupos na regex, as colunas adicionais serão ignoradas.
Para obter mais informações, consulte Classe RegexSerDe
Nome da biblioteca de serialização
O nome da biblioteca de serialização do Regex SerDe é org.apache.hadoop.hive.serde2.RegexSerDe
. Para obter informações sobre o código-fonte, consulte Classe RegexSerDe
Exemplo
O exemplo a seguir cria uma tabela de logs do CloudFront usando o RegExSerDe. Substitua myregion
em s3://athena-examples-
pelo identificador da região onde o Athena é executado (por exemplo, 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/';