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/';