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à.
Connettore Amazon Athena DynamoDB
Il connettore Amazon Athena DynamoDB consente ad Amazon Athena di comunicare con DynamoDB in modo da poter eseguire query sulle tabelle con SQL. Operazioni di scrittura come INSERT INTO non sono supportate.
Se hai abilitato Lake Formation nel tuo account, il ruolo IAM per il tuo connettore Lambda federato Athena che hai distribuito nell'accesso in lettura deve avere accesso in lettura in AWS Serverless Application Repository Lake Formation a. AWS Glue Data Catalog
Prerequisiti
Implementa il connettore sul tuo Account AWS utilizzando la console Athena o AWS Serverless Application Repository. Per ulteriori informazioni, consulta Implementa un connettore di origine dati o Utilizzare il AWS Serverless Application Repository per distribuire un connettore di origine dati.
Parametri
Utilizza le variabili di ambiente Lambda illustrate in questa sezione per configurare il connettore DynamoDB.
-
spill_bucket: specifica il bucket Amazon S3 per i dati che superano i limiti della funzione Lambda.
-
spill_prefix: (facoltativo) per impostazione predefinita, viene utilizzata una sottocartella nello
spill_bucket
specificato chiamataathena-federation-spill
. Ti consigliamo di configurare un ciclo di vita dell'archiviazione di Amazon S3 in questa posizione per eliminare gli spill più vecchi di un numero predeterminato di giorni o ore. -
spill_put_request_headers: (facoltativo) una mappa codificata in JSON delle intestazioni e dei valori della richiesta per la richiesta
putObject
di Amazon S3 utilizzata per lo spill (ad esempio,{"x-amz-server-side-encryption" : "AES256"}
). Per altre possibili intestazioni, consulta il riferimento PutObjectall'API di Amazon Simple Storage Service. -
kms_key_id: (facoltativo) per impostazione predefinita, tutti i dati riversati in Amazon S3 vengono crittografati utilizzando la modalità di crittografia autenticata AES-GCM e una chiave generata casualmente. Per fare in modo che la tua funzione Lambda utilizzi chiavi di crittografia più potenti generate da KMS come
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
, puoi specificare l'ID della chiave KMS. -
disable_spill_encryption: (facoltativo) se impostato su
True
, disabilita la crittografia dello spill. L'impostazione predefinita èFalse
: in questo modo, i dati riversati su S3 vengono crittografati utilizzando AES-GCM tramite una chiave generata casualmente o una chiave generata mediante KMS. La disabilitazione della crittografia dello spill può migliorare le prestazioni, soprattutto se la posizione dello spill utilizza la crittografia lato server. -
disable_glue — (Facoltativo) Se presente e impostato su true, il connettore non tenta di recuperare metadati supplementari da. AWS Glue
-
glue_catalog: (facoltativo) utilizza questa opzione per specificare un catalogo AWS Glue multi-account. Per impostazione predefinita, il connettore tenta di ottenere metadati dal proprio account. AWS Glue
-
disable_projection_and_casing: (facoltativo) disabilita la proiezione e la formattazione delle maiuscole. Utilizzatelo se desiderate interrogare le tabelle DynamoDB i cui nomi di colonna contengono maiuscole e minuscole e non desiderate specificare
columnMapping
una proprietà sulla tabella. AWS GlueIl parametro
disable_projection_and_casing
utilizza i seguenti valori per specificare il comportamento di formattazione di maiuscole e minuscole e della mappatura delle colonne:-
auto: disabilita la proiezione e la formattazione di maiuscole e minuscole quando viene rilevato un tipo precedentemente non supportato e la mappatura dei nomi delle colonne non è impostata sulla tabella. Si tratta dell'impostazione di default.
-
always: disabilita la proiezione e la formattazione di maiuscole e minuscole in modo incondizionato. È utile quando i nomi delle colonne DynamoDB contengono lettere maiuscole e minuscole ma non desideri specificare alcuna mappatura dei nomi delle colonne.
Quando utilizzi il parametro
disable_projection_and_casing
, tieni presente i seguenti punti:-
L'utilizzo del parametro può comportare un consumo maggiore di larghezza di banda. Inoltre, se la funzione Lambda non si trova nella stessa Regione AWS dell'origine dati, i costi di trasferimento standard tra Regioni AWS saranno più elevati a causa del maggiore utilizzo della larghezza di banda. Per ulteriori informazioni sui costi di trasferimento tra regioni, consulta la sezione Costi di trasferimento AWS dati per le architetture server e serverless
nel blog di Partner Network. AWS -
Dato che viene trasferito un numero maggiore di byte e poiché un numero maggiore di byte richiede un tempo di deserializzazione maggiore, la latenza complessiva può aumentare.
-
Configurazione di database e tabelle in AWS Glue
Poiché la capacità di inferenza dello schema integrata nel connettore è limitata, potresti volerla utilizzare AWS Glue per i metadati. A tale scopo, è necessario disporre di un database e di una tabella. AWS Glue Per abilitarli all'uso con DynamoDB, è necessario modificarne le proprietà.
Per modificare le proprietà del database nella AWS Glue console
Accedere AWS Management Console e aprire la AWS Glue console all'indirizzo https://console.aws.amazon.com/glue/
. -
Nel riquadro di navigazione, espandi Data Catalog, quindi scegli Database.
Nella pagina Databases (Database), puoi modificare un database esistente oppure scegliere Add database (Aggiungi database) per crearne uno.
-
Nell'elenco dei database, scegli il link del database da modificare.
-
Scegli Modifica.
-
Nella pagina Aggiorna un database, in Impostazioni del database, per Posizione, aggiungi la stringa
dynamo-db-flag
. Questa parola chiave indica che il database contiene tabelle che il connettore Athena DynamoDB utilizza per metadati supplementari ed è necessaria per database diversi da. AWS Gluedefault
La proprietàdynamo-db-flag
è utile per filtrare i database negli account che hanno numerosi database. -
Scegli Update Database (Aggiorna database).
Per modificare le proprietà delle tabelle nella console AWS Glue
Accedere AWS Management Console e aprire la AWS Glue console all'indirizzo https://console.aws.amazon.com/glue/
. -
Nel riquadro di navigazione, espandi Data Catalog, quindi scegli Tabelle.
-
Nella pagina Tabelle, nell'elenco delle tabelle, scegli il nome collegato della tabella che desideri modificare.
-
Scegli Actions (Operazioni), Edit (Modifica).
-
Nella pagina Edit table (Modifica tabella), nella sezione Table properties (Proprietà della tabella), aggiungi le seguenti proprietà della tabella in base alle necessità. Se si utilizza il crawler AWS Glue DynamoDB, queste proprietà vengono impostate automaticamente.
-
DynamoDB: stringa che indica al connettore DynamoDB per Athena che la tabella può essere utilizzata per metadati supplementari. Inserisci la stringa
dynamodb
nelle proprietà della tabella in un campo denominato classification (classificazione), con una corrispondenza esatta.Nota
La pagina Imposta le proprietà della tabella che fa parte del processo di creazione della tabella nella AWS Glue console contiene una sezione Formato dati con un campo Classificazione. Qui non puoi immettere o scegliere
dynamodb
. Invece, dopo aver creato la tabella, completa le operazioni per modificare la tabella e inserireclassification
edynamodb
come coppia chiave-valore nella sezione Proprietà della tabella. -
sourceTable: proprietà facoltativa della tabella che definisce il nome della tabella di origine in DynamoDB. Usalo se le regole di denominazione delle AWS Glue tabelle ti impediscono di creare una AWS Glue tabella con lo stesso nome della tabella DynamoDB. Ad esempio, le lettere maiuscole non sono consentite nei nomi delle AWS Glue tabelle, ma sono consentite nei nomi delle tabelle DynamoDB.
-
columnMapping: proprietà facoltativa della tabella che definisce le mappature dei nomi delle colonne. Usalo se le regole di denominazione delle AWS Glue colonne ti impediscono di creare una AWS Glue tabella con gli stessi nomi di colonna della tabella DynamoDB. Ad esempio, le lettere maiuscole non sono consentite nei nomi delle AWS Glue colonne, ma sono consentite nei nomi delle colonne di DynamoDB. Il valore della proprietà dovrebbe essere nel formato col1=Col1,col2=Col2. Il mapping di colonne si applica solo ai nomi delle colonne di primo livello e non ai campi nidificati.
-
defaultTimeZone— Proprietà opzionale della tabella che viene applicata a
datetime
valoridate
o valori che non hanno un fuso orario esplicito. L'impostazione di questo valore è una buona pratica per evitare discrepanze tra il fuso orario predefinito dell'origine dei dati e il fuso orario della sessione Athena. -
datetimeFormatMapping— Proprietà opzionale della tabella che specifica il
datetime
formatodate
or da utilizzare per l'analisi dei dati da una colonna del tipo di dati AWS Gluedate
ortimestamp
. Se questa proprietà non viene specificata, il connettore tenta di dedurreun formato ISO-8601. Se il connettore non è in grado di dedurre il formato di date
odatetime
oppure di analizzare la stringa non elaborata, il valore viene omesso dal risultato.Il valore
datetimeFormatMapping
deve essere nel formatocol1=someformat1,col2=someformat2
. Di seguito sono riportati alcuni formati di esempio:yyyyMMdd'T'HHmmss ddMMyyyy'T'HH:mm:ss
Se la tua colonna ha valori
date
odatetime
senza fuso orario e desideri utilizzare la colonna nella clausolaWHERE
, imposta la proprietàdatetimeFormatMapping
per la colonna.
-
-
Se definisci le colonne in modalità manuale, assicurati di utilizzare i tipi di dati appropriati. Se hai usato un crawler, convalida le colonne e i tipi rilevati dal crawler.
-
Selezionare Salva.
Autorizzazioni richieste
Consulta la sezione Policies
del file athena-dynamodb.yaml
-
Accesso in scrittura ad Amazon S3: per trasferire i risultati di query di grandi dimensioni, il connettore richiede l'accesso in scrittura a una posizione in Amazon S3.
-
Athena GetQueryExecution: il connettore utilizza questa autorizzazione per fallire rapidamente quando la query Athena upstream è terminata.
-
AWS Glue Data Catalog— Il connettore DynamoDB richiede l'accesso in sola lettura per ottenere informazioni sullo AWS Glue Data Catalog schema.
-
CloudWatch Registri: il connettore richiede l'accesso ai CloudWatch registri per l'archiviazione dei log.
-
Accesso in lettura a DynamoDB: il connettore utilizza le operazioni API
DescribeTable
,ListSchemas
,ListTables
,Query
eScan
.
Prestazioni
Il connettore DynamoDB per Athena supporta le scansioni in parallelo e tenta di eseguire il pushdown dei predicati come parte delle query DynamoDB. Un predicato hash key con valori X
distinti genera X
chiamate di query a DynamoDB. Tutti gli altri scenari di predicato danno come risultato un numero Y
di chiamate di scansione, dove Y
viene determinato euristicamente in base alla dimensione della tabella e alla velocità di trasmissione effettiva allocata. Tuttavia, la selezione di un sottoinsieme di colonne comporta un runtime di esecuzione delle query più lungo.
Viene eseguito il pushdown delle clausole LIMIT
e dei predicati semplici, il che può ridurre la quantità di dati scansionati e, di conseguenza, il runtime di esecuzione delle query.
Clausole LIMIT
Una dichiarazione LIMIT N
riduce la quantità di dati analizzati dalla query. Con il pushdown LIMIT N
, il connettore restituisce solo le righe N
ad Athena.
Predicati
Un predicato è un'espressione nella clausola WHERE
di una query SQL che valuta a un valore booleano e filtra le righe in base a più condizioni. Per migliorare le funzionalità e ridurre la quantità di dati scansionati, il connettore Athena DynamoDB può combinare queste espressioni e inviarle direttamente a DynamoDB.
I seguenti operatori del connettore DynamoDB di Athena supportano il pushdown dei predicati:
-
Boolean: AND
-
Uguaglianza: EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, IS_NULL
Esempio di pushdown combinato
Per le funzionalità di esecuzione di query avanzate, combina i tipi di pushdown, come nell'esempio seguente:
SELECT * FROM my_table WHERE col_a > 10 and col_b < 10 LIMIT 10
Per un articolo sull'utilizzo del pushdown del predicato per migliorare le prestazioni nelle query federate, incluso DynamoDB, consulta Come migliorare le query federate con il pushdown del predicato in Amazon Athena
Interrogazioni pass-through
Il connettore DynamoDB supporta le query passthrough e utilizza la sintassi PartiQL. L'operazione API GetItemDynamoDB non è supportata. Per informazioni sull'interrogazione di DynamoDB utilizzando PartiQL, consulta le istruzioni PartiQL select per DynamoDB nella Amazon DynamoDB Developer Guide.
Per utilizzare le query passthrough con DynamoDB, utilizzate la seguente sintassi:
SELECT * FROM TABLE( system.query( query => '
query_string
' ))
Il seguente esempio di query passthrough DynamoDB utilizza PartiQL per restituire un elenco di dispositivi Fire TV Stick che hanno una proprietà successiva al 24/12/22. DateWatched
SELECT * FROM TABLE( system.query( query => 'SELECT Devices FROM WatchList WHERE Devices.FireStick.DateWatched[0] > '12/24/22'' ))
Risoluzione dei problemi
Filtri multipli su una colonna con chiave di ordinamento
Messaggio di errore: KeyConditionExpressionsdeve contenere
solo una condizione per chiave
Causa: questo problema può verificarsi nella versione 3 del motore Athena nelle query che hanno un filtro con limite sia inferiore sia superiore su una colonna con chiave di ordinamento DynamoDB. Poiché DynamoDB non supporta più di una condizione di filtro su una chiave di ordinamento, quando il connettore tenta di inviare una query a cui sono applicate entrambe le condizioni, viene generato un errore.
Soluzione: aggiorna il connettore alla versione 2023.11.1 o successiva. Per istruzioni sull'aggiornamento di un connettore, consulta Aggiornare un connettore di origine dati.
Costi
I costi di utilizzo del connettore dipendono dalle AWS risorse sottostanti utilizzate. Dato che le query che utilizzano le scansioni possono consumare un numero elevato di unità di capacità di lettura (RCU)
Risorse aggiuntive
-
Per un'introduzione all'utilizzo del connettore Amazon Athena DynamoDB, consulta Accesso, esecuzione di query e join di tabelle Amazon DynamoDB con Athena nella guida AWS Prescriptive Guidance Patterns.
-
Per un articolo su come utilizzare il connettore Athena DynamoDB per interrogare i dati in DynamoDB con SQL e visualizzare approfondimenti in Amazon, QuickSight consulta il post del AWS blog Big Data Visualizza gli approfondimenti di Amazon DynamoDB in Amazon usando il connettore Amazon Athena DynamoDB
e. QuickSight AWS Glue Per ulteriori informazioni su questo connettore, visita il sito corrispondente su .com.
GitHub