使用分割區投影為 Athena 中的ALB連線記錄建立表格 - Amazon Athena

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

使用分割區投影為 Athena 中的ALB連線記錄建立表格

由於ALB連線記錄具有已知的結構,您可以事先指定其資料分割配置,因此您可以使用 Athena 分割區投影功能,縮短查詢執行階段並自動化磁碟分割管理。分割區投影會在新增資料時自動新增分割區。因此您無需使用 ALTER TABLE ADD PARTITION 手動新增分割區。

下列範例CREATE TABLE陳述式會自動在指定日期的ALB連線記錄上使用分割區投影,直到單一 AWS 區域為止。該陳述式基於上一節中的範例,但新增了 PARTITIONED BYTBLPROPERTIES 子句以啟用分割區投影。在LOCATION和子storage.location.template句中,將預留位置取代為識別ALB連線日誌之 Amazon S3 儲存貯體位置的值。如需有關連線記錄檔位置的詳細資訊,請參閱《應用程式負載平衡器使用者指南》中的連線記錄檔。對於projection.day.range,取代 2023/01/01 與您要使用的開始日期。成功執行查詢之後,您可以查詢資料表。您無須執行 ALTER TABLE ADD PARTITION 就能載入分割區。如需有關每個記錄檔欄位的資訊,請參閱連線記錄項目

CREATE EXTERNAL TABLE IF NOT EXISTS alb_connection_logs ( time string, client_ip string, client_port int, listener_port int, tls_protocol string, tls_cipher string, tls_handshake_latency double, leaf_client_cert_subject string, leaf_client_cert_validity string, leaf_client_cert_serial_number string, tls_verify_status string, conn_trace_id string ) PARTITIONED BY ( day STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = '1', 'input.regex' = '([^ ]*) ([^ ]*) ([0-9]*) ([0-9]*) ([A-Za-z0-9.-]*) ([^ ]*) ([-.0-9]*) \"([^\"]*)\" ([^ ]*) ([^ ]*) ([^ ]*) ?([^ ]*)?( .*)?' ) LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/' TBLPROPERTIES ( "projection.enabled" = "true", "projection.day.type" = "date", "projection.day.range" = "2023/01/01,NOW", "projection.day.format" = "yyyy/MM/dd", "projection.day.interval" = "1", "projection.day.interval.unit" = "DAYS", "storage.location.template" = "s3://amzn-s3-demo-bucket/AWSLogs/<ACCOUNT-NUMBER>/elasticloadbalancing/<REGION>/${day}" )

如需有關分割區投影的詳細資訊,請參閱搭配 Amazon Athena 使用分割區投影