Proiezione delle partizioni con Amazon Athena
È possibile utilizzare la proiezione delle partizioni in Athena per velocizzare l'elaborazione delle query di tabelle altamente partizionate e automatizzare la gestione delle partizioni.
Durante la proiezione delle partizioni, Athena calcola i valori e le posizioni delle partizioni utilizzando le proprietà della tabella configurate direttamente sulla tabella in AWS Glue. Le proprietà della tabella consentono ad Athena di "proiettare", o determinare, le informazioni sulla partizione necessarie anziché eseguire in AWS Glue Data Catalog una ricerca di metadati più dispendiosa in termini di tempo. Poiché le operazioni in memoria sono spesso più veloci delle operazioni remote, la proiezione delle partizioni può ridurre il runtime delle query su tabelle altamente partizionate. A seconda delle caratteristiche specifiche della query e dei dati sottostanti, la proiezione delle partizioni può ridurre significativamente il runtime delle query vincolate al recupero dei metadati delle partizioni.
Comprendi l'eliminazione delle partizioni rispetto alla proiezione delle partizioni
Il pruning delle partizioni raccoglie i metadati e li assegna solo alle partizioni che si applicano alla query. Questo spesso accelera le query. Athena utilizza il pruning delle partizioni per tutte le tabelle con colonne di partizione, incluse quelle configurate per la proiezione delle partizioni.
Normalmente, durante l'elaborazione delle query, Athena effettua una chiamata GetPartitions al AWS Glue Data Catalog prima di eseguire la potatura delle partizioni. Se una tabella ha un numero elevato di partizioni, l'utilizzo di GetPartitions può influire negativamente sulle prestazioni. Per evitare ciò, è possibile utilizzare la proiezione delle partizioni. La proiezione delle partizioni permette ad Athena di evitare di chiamare GetPartitions perché la configurazione della proiezione delle partizioni fornisce ad Athena tutte le informazioni necessarie per costruire le partizioni stesse.
Utilizzo della proiezione di partizioni
Per utilizzare la proiezione delle partizioni, è necessario specificare gli intervalli di valori e tipi di proiezione per ogni colonna di partizione nelle proprietà della tabella in AWS Glue Data Catalog o nel metastore Hive esterno. Queste proprietà personalizzate nella tabella permettono ad Athena di sapere quali modelli di partizione aspettarsi quando viene eseguita una query sulla tabella. Durante l'esecuzione della query, Athena utilizza queste informazioni per proiettare i valori della partizione invece di recuperarli dal metastore Hive esterno o da AWS Glue Data Catalog. Questo non solo riduce i tempi di esecuzione delle query, ma automatizza anche la gestione delle partizioni perché elimina la necessità di creare manualmente partizioni in Athena, AWS Glue o nel metastore Hive esterno.
Importante
Se si abilita la proiezione delle partizioni su una tabella, Athena ignora i metadati delle partizioni registrati nella tabella nel metastore Hive o in AWS Glue Data Catalog.
Alcuni casi d'uso
Gli scenari in cui la proiezione delle partizioni è utile sono i seguenti:
-
Le query su una tabella altamente partizionata non vengono completate rapidamente come si desidera.
-
È possibile aggiungere regolarmente partizioni alle tabelle quando vengono create nuove partizioni di data o ora nei dati. Con la proiezione delle partizioni, è possibile configurare intervalli di date relativi che possono essere utilizzati all'arrivo di nuovi dati.
-
Si dispone di dati altamente partizionati in Amazon S3. I dati non sono pratici da modellare nel tuo metastore Hive o AWS Glue Data Catalog e le query leggono solo piccole parti di esso.
Strutture di partizioni proiettabili
La proiezione delle partizioni è configurata più facilmente quando le partizioni seguono un modello prevedibile come, a titolo esemplificativo, il seguente:
-
Interi: qualsiasi sequenza continua di numeri interi come
[1, 2, 3, 4, ..., 1000]o[0500, 0550, 0600, ..., 2500]. -
Date: qualsiasi sequenza continua di date o date e orari, ad esempio
[20200101, 20200102, ..., 20201231]o[1-1-2020 00:00:00, 1-1-2020 01:00:00, ..., 12-31-2020 23:00:00]. -
Valori enumerati: un set finito di valori enumerati, ad esempio codici aeroportuali o Regioni AWS.
-
Registri dei Servizio AWS: i registri dei Servizio AWS in genere dispongono di una struttura nota il cui schema di partizione può essere specificato in AWS Glue e che Athena può quindi utilizzare per la proiezione delle partizioni.
Come personalizzare il modello di percorso della partizione
Per impostazione predefinita, Athena crea le posizioni delle partizioni utilizzando il modulo s3://amzn-s3-demo-bucket/, ma se i dati sono organizzati in modo diverso, Athena offre un meccanismo per personalizzare questo modello di percorso. Per conoscere le fasi della , consulta Specifica dei percorsi di storage S3 personalizzati.<table-root>/partition-col-1=<partition-col-1-val>/partition-col-2=<partition-col-2-val>/
Considerazioni e limitazioni
Tieni presente le seguenti considerazioni:
-
La proiezione delle partizioni elimina la necessità di specificare manualmente le partizioni AWS Glue o un metastore Hive esterno.
-
Quando si attiva la proiezione delle partizioni su una tabella, Athena ignora tutti i metadati delle partizioni presenti nel metastore Hive esterno o in AWS Glue Data Catalog per tale tabella.
-
Se una partizione proiettata non esiste in Amazon S3, Athena continuerà a proiettare la partizione. Athena non genera un errore, ma non viene restituito alcun dato. Tuttavia, se troppe partizioni sono vuote, le prestazioni possono essere più lente rispetto alle partizioni AWS Glue tradizionali. Se più della metà delle partizioni proiettate sono vuote, si consiglia di utilizzare partizioni tradizionali.
-
Le query per valori che superano i limiti di intervallo definiti per la proiezione della partizione non restituiscono un errore. La query invece viene eseguita, ma restituisce zero righe. Ad esempio, se si dispone di dati relativi al tempo che iniziano nel 2020 e sono definiti come
'projection.timestamp.range'='2020/01/01,NOW', una query comeSELECT * FROMverrà completata correttamente, ma restituirà zero righe.table-nameWHERE timestamp = '2019/02/02' -
La proiezione delle partizioni è utilizzabile solo quando la tabella viene interrogata tramite Athena. Se la stessa tabella viene letta attraverso un altro servizio, ad esempio Amazon Redshift Spectrum, Athena per Spark o Amazon EMR, vengono utilizzati i metadati della partizione standard.
-
Poiché la proiezione delle partizioni è una funzionalità solo DML,
SHOW PARTITIONSnon elenca le partizioni proiettate da Athena ma non registrate nel catalogo AWS Glue o metastore Hive esterno. -
Athena non utilizza le proprietà della tabella delle viste come configurazione per la proiezione delle partizioni. Per aggirare questa limitazione, configurare e abilitare la proiezione della partizione nelle proprietà della tabella per le tabelle a cui fanno riferimento le viste.
Video
Il video seguente mostra come utilizzare la proiezione delle partizioni per migliorare le prestazioni delle vostre query in Athena.