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à.
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.
Questo connettore può essere registrato con Glue Data Catalog come catalogo federato. Supporta i controlli di accesso ai dati definiti in Lake Formation a livello di catalogo, database, tabella, colonna, riga e tag. Questo connettore utilizza Glue Connections per centralizzare le proprietà di configurazione in Glue.
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 Creare una connessione a una fonte di dati o Utilizzare il AWS Serverless Application Repository per distribuire un connettore di origine dati.
Limitazioni
Se migri le tue connessioni DynamoDB a Glue Catalog e Lake Formation, verranno riconosciuti solo i nomi minuscoli di tabelle e colonne.
Parametri
Utilizza i parametri in questa sezione per configurare il connettore DynamoDB.
Si consiglia di configurare un connettore DynamoDB utilizzando un oggetto Glue connections. Per fare ciò, imposta la variabile di glue_connection
ambiente del connettore DynamoDB Lambda sul nome della connessione Glue da utilizzare.
Proprietà delle connessioni Glue
Utilizzate il comando seguente per ottenere lo schema per un oggetto di connessione Glue. Questo schema contiene tutti i parametri che puoi usare per controllare la tua connessione.
aws glue describe-connection-type --connection-type DYNAMODB
Proprietà dell'ambiente Lambda
glue_connection — Specificate il nome della connessione Glue associata al connettore federato.
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 a 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 a 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.
-
Seleziona 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. Poiché le query che utilizzano scansioni possono consumare un gran numero di unità di capacità di lettura (RCUs)
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