Creazione di una tabella per i log CloudFront in Athena utilizzando il partizionamento manuale con Parquet - Amazon Athena

Creazione di una tabella per i log CloudFront in Athena utilizzando il partizionamento manuale con Parquet

Per creare una tabella per i campi del file di log standard di CloudFront utilizzando un formato Parquet
  1. Copia e incolla la seguente istruzione DDL di esempio nell'Editor di query della console Athena. L'istruzione di esempio utilizza i campi del file di log documentati nella sezione Campi dei file di log standard della Guida per gli sviluppatori di Amazon CloudFront.

    Questa query utilizza ParqueThiveSerDe con le seguenti proprietà SerDe per leggere correttamente i campi Parquet in Athena.

    CREATE EXTERNAL TABLE `cf_logs_manual_partition_parquet`( `date` string, `time` string, `x_edge_location` string, `sc_bytes` string, `c_ip` string, `cs_method` string, `cs_host` string, `cs_uri_stem` string, `sc_status` string, `cs_referer` string, `cs_user_agent` string, `cs_uri_query` string, `cs_cookie` string, `x_edge_result_type` string, `x_edge_request_id` string, `x_host_header` string, `cs_protocol` string, `cs_bytes` string, `time_taken` string, `x_forwarded_for` string, `ssl_protocol` string, `ssl_cipher` string, `x_edge_response_result_type` string, `cs_protocol_version` string, `fle_status` string, `fle_encrypted_fields` string, `c_port` string, `time_to_first_byte` string, `x_edge_detailed_result_type` string, `sc_content_type` string, `sc_content_len` string, `sc_range_start` string, `sc_range_end` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/'
  2. Eseguire la query nella console Athena. Una volta completata la query, Athena registra la tabella cf_logs_manual_partition_parquet, rendendo i dati in essa contenuti pronti per l'esecuzione di query.

Query di esempio

La seguente query somma il numero di byte inviati da CloudFront tra il 19 gennaio 2025.

SELECT sum(cast("sc_bytes" as BIGINT)) as sc FROM cf_logs_manual_partition_parquet WHERE "date"='2025-01-19'

Per eliminare righe duplicate (ad esempio, righe vuote duplicate) dai risultati della query, è possibile utilizzare l'istruzione SELECT DISTINCT, come nell'esempio seguente.

SELECT DISTINCT * FROM cf_logs_manual_partition_parquet