Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Crea una tabella per CloudFront i log in Athena utilizzando la proiezione delle partizioni con JSON

Modalità Focus
Crea una tabella per CloudFront i log in Athena utilizzando la proiezione delle partizioni con JSON - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

È possibile ridurre il tempo di esecuzione delle query e automatizzare la gestione delle partizioni con la funzione di proiezione delle partizioni Athena. La proiezione delle partizioni aggiunge automaticamente nuove partizioni man mano che vengono aggiunti nuovi dati. Ciò elimina la necessità di aggiungere manualmente le partizioni utilizzando ALTER TABLE ADD PARTITION.

L'esempio seguente, l'istruzione CREATE TABLE utilizza automaticamente la proiezione delle partizioni sui CloudFront log di una distribuzione specificata fino a quando non sono presenti per una singola distribuzione. CloudFront Regione AWS Dopo aver eseguito la query con esito positivo, è possibile eseguire query sulla tabella.

CREATE EXTERNAL TABLE `cloudfront_logs_pp`( `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) PARTITIONED BY( distributionid string, year int, month int, day int, hour int ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( 'paths'='c-ip,c-port,cs(Cookie),cs(Host),cs(Referer),cs(User-Agent),cs-bytes,cs-method,cs-protocol,cs-protocol-version,cs-uri-query,cs-uri-stem,date,fle-encrypted-fields,fle-status,sc-bytes,sc-content-len,sc-content-type,sc-range-end,sc-range-start,sc-status,ssl-cipher,ssl-protocol,time,time-taken,time-to-first-byte,x-edge-detailed-result-type,x-edge-location,x-edge-request-id,x-edge-response-result-type,x-edge-result-type,x-forwarded-for,x-host-header') STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/AWS_ACCOUNT_ID/CloudFront/' TBLPROPERTIES ( 'projection.distributionid.type'='enum', 'projection.distributionid.values'='E2Oxxxxxxxxxxx', 'projection.day.range'='01,31', 'projection.day.type'='integer', 'projection.day.digits'='2', 'projection.enabled'='true', 'projection.month.range'='01,12', 'projection.month.type'='integer', 'projection.month.digits'='2', 'projection.year.range'='2025,2026', 'projection.year.type'='integer', 'projection.hour.range'='01,12', 'projection.hour.type'='integer', 'projection.hour.digits'='2', 'storage.location.template'='s3://amzn-s3-demo-bucket/AWSLogs/AWS_ACCOUNT_ID/CloudFront/${distributionid}/${year}/${month}/${day}/${hour}/')

Di seguito sono riportate alcune considerazioni sulle proprietà utilizzate nell'esempio precedente.

  • Nome tabella: il nome della tabella cloudfront_logs_pp è sostituibile. Puoi cambiarlo con il nome che preferisci.

  • Posizione: modifica s3://amzn-s3-demo-bucket/AWSLogs/AWS_ACCOUNT_ID/ in modo che punti al tuo bucket Amazon S3.

  • Distribuzione IDs: puoi projection.distributionid.values infatti specificare distribuzioni IDs multiple separandole con virgole. Ad esempio, <distributionID1>, <distributionID2>.

  • Intervallo di anni: inprojection.year.range, puoi definire l'intervallo di anni in base ai tuoi dati. Ad esempio, puoi adattarlo a qualsiasi periodo, ad esempio 2025, 2026.

    Nota

    L'inclusione di partizioni vuote, come quelle per date future (esempio: 2025-2040), può influire sulle prestazioni delle query. Tuttavia, la proiezione delle partizioni è progettata per gestire efficacemente le date future. Per mantenere prestazioni ottimali, assicuratevi che le partizioni siano gestite con attenzione ed evitate partizioni vuote eccessivamente quando possibile.

  • Modello di posizione di archiviazione: è necessario assicurarsi di aggiornarlo storage.location.template correttamente in base alla seguente struttura di CloudFront partizionamento e al percorso S3.

    Parametro Pattern
    CloudFront struttura di partizionamento AWSLogs/{account_id}/CloudFront/{DistributionId}/folder2/{yyyy}/{MM}/{dd}/{HH}/folder3
    percorso S3 s3://amzn-s3-demo-bucket/AWSLogs/account_id/CloudFront/E2Oxxxxxxxxxxx/folder2/2025/01/25/03/folder3/

    Dopo aver verificato che la struttura di CloudFront partizionamento e la struttura S3 corrispondono ai modelli richiesti, aggiornali come segue: storage.location.template

    'storage.location.template'='s3://amzn-s3-demo-bucket/AWSLogs/account_id/CloudFront/${distributionid}/folder2/${year}/${month}/${day}/${hour}/folder3/'
    Nota

    La corretta configurazione di storage.location.template è fondamentale per garantire la corretta memorizzazione e recupero dei dati.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.