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

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

正则表达式 SerDe

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

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

有关更多信息,请参阅 Apache Hive 文档 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/';