本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
正则表达式SerDe
正则表达式SerDe使用正则表达式 (regex) 通过将正则表达式组提取到表列中来反序列化数据。
如果数据中的某一行与正则表达式不匹配,则该行中的所有列都作为 NULL
返回。如果某行与正则表达式匹配,但其组少于预期,则缺少的组为 NULL
。如果数据中的一行与正则表达式匹配,但其列多于正则表达式中的组,则会忽略其他列。
有关更多信息,请参见班级RegexSerDe
SerDe名称
RegexSerDe
库名称
RegexSerDe
示例
以下示例从中创建一个表CloudFront使用日志RegExSerDe。在 s3://athena-examples-
中,将 myregion
/cloudfront/plaintext/myregion
替换为您运行 Athena 所在的区域标识符(例如 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/';