Regex SerDe - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Regex SerDe

Regex SerDe 使用正则表达式通过将正则表达式组提取到表列中来反序列化数据。

如果数据中的某一行与正则表达式不匹配,则该行中的所有列都作为 NULL 返回。如果某行与正则表达式匹配,但其组少于预期,则缺少的组为 NULL。如果数据中的一行与正则表达式匹配,但其列多于正则表达式中的组,则会忽略其他列。

有关更多信息,请参阅 Apache Hive 文档中的 类 RegexSerDe

SerDe 名称

RegexSerDe

库名称

RegexSerDe

示例

以下示例使用 RegExSerDe 从 CloudFront 日志创建一个表。将 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/';