Ottimizzare le tabelle Iceberg - 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à.

Ottimizzare le tabelle Iceberg

Athena offre diverse funzionalità di ottimizzazione per migliorare le prestazioni delle query sulle tabelle Apache Iceberg. Man mano che i dati si accumulano, le query possono diventare meno efficienti a causa dell'aumento del sovraccarico di elaborazione dei file e del costo di calcolo dell'applicazione delle eliminazioni a livello di riga archiviate nei file di eliminazione di Iceberg. Per affrontare queste sfide, Athena supporta gli operatori di compattazione manuale e aspirazione per ottimizzare la struttura del tavolo. Athena collabora anche con le statistiche di Iceberg per consentire l'ottimizzazione delle query basata sui costi e l'indicizzazione delle colonne Parquet per un'eliminazione precisa dei dati durante l'esecuzione delle query. Queste funzionalità interagiscono per ridurre i tempi di esecuzione delle query, ridurre al minimo la scansione dei dati e ridurre i costi. Questo argomento descrive come utilizzare queste funzionalità di ottimizzazione per mantenere query ad alte prestazioni sulle tabelle Iceberg.

OPTIMIZE

L'operazione di compattazione OPTIMIZE table REWRITE DATA riscrive i file di dati in un layout più ottimizzato in base alle dimensioni e al numero di file di eliminazione associati. Per i dettagli sulla sintassi e sulle proprietà della tabella, consulta la pagina OPTIMIZE.

Esempio

L'esempio seguente unisce i file di eliminazione in file di dati e produce file vicino alle dimensioni del file di destinazione dove il valore di category è c1.

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'

VACUUM

VACUUM esegue la scadenza degli snapshot e la rimozione dei file orfani. Queste operazioni riducono le dimensioni dei metadati e rimuovono i file non nello stato corrente della tabella che sono anche più vecchi del periodo di conservazione specificato per la tabella. Per i dettagli sulla sintassi, consulta la pagina VACUUM.

Esempio

L'esempio seguente utilizza una proprietà della tabella per configurare la tabella iceberg_table in modo che mantenga i dati degli ultimi tre giorni, quindi utilizza VACUUM per far scadere i vecchi snapshot e rimuovere i file orfani dalla tabella.

ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table

Usa le statistiche della tabella Iceberg

L'ottimizzatore basato sui costi di Athena utilizza le statistiche di Iceberg per produrre piani di query ottimali. Una volta generate le statistiche per le tabelle Iceberg, Athena utilizza automaticamente queste informazioni per prendere decisioni intelligenti sull'ordinamento dei join, sui filtri e sul comportamento di aggregazione, spesso migliorando le prestazioni delle query e riducendo i costi.

Le statistiche Iceberg sono attivate per impostazione predefinita quando usi S3 Tables. Per altre tabelle Iceberg, Athena utilizza la use_iceberg_statistics proprietà table per determinare se sfruttare le statistiche per l'ottimizzazione basata sui costi. Per iniziare, consulta Ottimizzazione delle prestazioni delle query utilizzando le statistiche delle colonne nella Guida AWS Glue utente o utilizza la console Athena per generare statistiche su richiesta sulle tabelle Iceberg.

Usa l'indicizzazione delle colonne in Parquet

L'indicizzazione delle colonne Parquet consente ad Athena di eseguire un'eliminazione dei dati più precisa durante l'esecuzione delle query sfruttando le statistiche a livello di pagina oltre alle statistiche a livello min/max di gruppo di righe. Ciò consente ad Athena di saltare le pagine non necessarie all'interno dei gruppi di righe, riducendo in modo significativo la quantità di dati scansionati e migliorando le prestazioni delle query. Funziona al meglio per le query con predicati di filtro selettivi su colonne ordinate, migliorando sia i tempi di esecuzione che l'efficienza della scansione dei dati e riducendo al contempo la quantità di dati che Athena deve leggere da Amazon S3.

Athena utilizza gli indici delle colonne Parquet per impostazione predefinita con S3 Tables se gli indici delle colonne sono presenti nei file Parquet sottostanti. Per altre tabelle Iceberg, Athena utilizza use_iceberg_parquet_column_index la proprietà per determinare se utilizzare gli indici delle colonne nel file Parquet. Imposta questa proprietà della tabella utilizzando la console o l'API. AWS Glue UpdateTable