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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

正则表达式 SerDe

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

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

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

SerDe名称

RegexSerDe

库名称

RegexSerDe

Examples

以下示例使用 CloudFront 从 RegExSerDe 日志创建表。 替换 myregion 中的 s3://athena-examples-myregion/cloudfront/plaintext/,带您在其中运行 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/';