正則表 SerDe - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

正則表 SerDe

正則表達式 SerDe 使用正則表達式(regex)通過將正則表達式組提取到表列中來反序列化數據。

如果資料中的某一列不符合 regex,則該列中的所有欄都會以 NULL 的形式傳回。如果某一列符合 regex 但擁有的群組數量低於預期,則遺失的群組為 NULL。如果資料中的某一列符合 regex 但具有比 regex 中的群組更多的欄,則會忽略額外的欄。

如需詳細資訊,請參閱 Apache Hive 文件 RegexSerDe中的類別

序列化程式庫名稱

正則表達式的序列化庫名稱 SerDe 是org.apache.hadoop.hive.serde2.RegexSerDe。如需原始程式碼資訊,請參閱 Apache 文件 RegexSerDe中的類別

範例

下列範例會使用 CloudFront 記錄檔建立資料表 RegExSerDe。Replace (取代) 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/';