Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Der Amazon Athena DynamoDB-Connector ermöglicht Amazon Athena die Kommunikation mit DynamoDB, sodass Sie Ihre Tabellen mit abfragen können. SQL Schreiboperationen wie INSERT INTO werden nicht unterstützt.
Dieser Konnektor kann bei Glue Data Catalog als Verbundkatalog registriert werden. Es unterstützt in Lake Formation definierte Datenzugriffskontrollen auf Katalog-, Datenbank-, Tabellen-, Spalten-, Zeilen- und Tagebene. Dieser Konnektor verwendet Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren.
Wenn Sie Lake Formation in Ihrem Konto aktiviert haben, AWS Serverless Application Repository muss die IAM Rolle für Ihren Athena Federated Lambda Connector, den Sie in der bereitgestellt haben, Lesezugriff in Lake Formation haben. AWS Glue Data Catalog
Voraussetzungen
Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Weitere Informationen finden Sie unter Erstellen Sie eine Datenquellenverbindung oder Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen.
Einschränkungen
Wenn Sie Ihre DynamoDB-Verbindungen zu Glue Catalog und Lake Formation migrieren, werden nur die in Kleinbuchstaben geschriebenen Tabellen- und Spaltennamen erkannt.
Parameter
Verwenden Sie die Parameter in diesem Abschnitt, um den DynamoDB-Connector zu konfigurieren.
Anmerkung
Athena-Datenquellenconnectors, die am 3. Dezember 2024 und später erstellt wurden, verwenden AWS Glue Verbindungen.
Die unten aufgeführten Parameternamen und Definitionen beziehen sich auf Athena-Datenquellenconnectors, die vor dem 3. Dezember 2024 erstellt wurden. Diese können sich von ihren entsprechenden AWS Glue Verbindungseigenschaften unterscheiden. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenconnectors manuell bereitstellen.
-
spill_bucket – Gibt den Amazon S3-Bucket für Daten an, die die Lambda-Funktionsgrenzen überschreiten.
-
spill_prefix – (Optional) Ist standardmäßig ein Unterordner im angegebenen
spill_bucket
genanntathena-federation-spill
. Wir empfehlen Ihnen, einen Amazon-S3-Speicher-Lebenszyklus an dieser Stelle zu konfigurieren, um die Überlaufe zu löschen, die älter als eine festgelegte Anzahl von Tagen oder Stunden sind. -
spill_put_request_headers — (Optional) Eine JSON kodierte Zuordnung von Anforderungsheadern und Werten für die Amazon S3
putObject
S3-Anfrage, die zum Verschicken verwendet wird (z. B.).{"x-amz-server-side-encryption" : "AES256"}
Weitere mögliche Header finden Sie PutObjectin der Amazon Simple Storage Service API Reference. -
kms_key_id — (Optional) Standardmäßig werden alle Daten, die auf Amazon S3 übertragen werden, mit dem GCM authentifizierten Verschlüsselungsmodus und einem zufällig AES generierten Schlüssel verschlüsselt. Damit Ihre Lambda-Funktion stärkere Verschlüsselungsschlüssel verwendet, die von KMS like generiert wurden
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
, können Sie eine KMS Schlüssel-ID angeben. -
disable_spill_encryption – (Optional) Bei Einstellung auf
True
, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung istFalse
so, dass Daten, die auf S3 übertragen werden, mit AES - verschlüsselt werden GCM — entweder mit einem zufällig generierten Schlüssel oder KMS zur Generierung von Schlüsseln. Das Deaktivieren der Überlauf-Verschlüsselung kann die Leistung verbessern, insbesondere wenn Ihr Überlauf-Standort eine serverseitige Verschlüsselung verwendet. -
disable_glue — (Optional) Falls vorhanden und auf true gesetzt, versucht der Connector nicht, zusätzliche Metadaten von abzurufen. AWS Glue
-
glue_catalog – (Optional) Verwenden Sie diese Option, um einen kontoübergreifenden AWS Glue -Katalog anzugeben. Standardmäßig versucht der Connector, Metadaten von seinem eigenen Konto abzurufen. AWS Glue
-
disable_projection_and_casing – (Optional) Deaktiviert Projektion und Groß-/Kleinschreibung. Verwenden Sie diese Option, wenn Sie DynamoDB-Tabellen abfragen möchten, deren Spaltennamen Groß- und Kleinschreibung enthalten, und Sie keine
columnMapping
Eigenschaft in Ihrer AWS Glue Tabelle angeben möchten.Der
disable_projection_and_casing
-Parameter verwendt die folgenden Werte, um das Verhalten der Groß-/Kleinschreibung und Spaltenzuordnung festzulegen:-
auto – Deaktiviert Projektion und Groß-/Kleinschreibung, wenn ein zuvor nicht unterstützter Typ erkannt wird und die Spaltennamenzuordnung für die Tabelle nicht festgelegt ist. Dies ist die Standardeinstellung.
-
always – Deaktiviert Projektion und Groß-/Kleinschreibung bedingungslos. Dies ist nützlich, wenn Ihre DynamoDB-Spaltennamen Groß- und Kleinschreibung enthalten, aber keine Spaltennamenzuordnung angeben möchten.
Beachten Sie bei der Verwendung des
disable_projection_and_casing
Parameters die folgenden Punkte:-
Die Verwendung des Parameters kann zu höherer Bandbreitennutzung führen. Wenn sich Ihre Lambda-Funktion nicht in derselben AWS-Region wie Ihre Datenquelle befindet, entstehen Ihnen darüber hinaus aufgrund der höheren Bandbreitennutzung höhere standardmäßige AWS -Übertragungskosten zwischen den Regionen. Weitere Informationen zu den Kosten für die Übertragung zwischen Regionen finden Sie im Partner Network-Blog unter AWS Datenübertragungsgebühren für Server- und serverlose Architekturen
. AWS -
Da eine größere Anzahl von Bytes übertragen wird und die größere Anzahl von Bytes eine höhere Deserialisierungszeit erfordert, kann sich die Gesamtlatenz erhöhen.
-
Einrichten von Datenbanken und Tabellen in AWS Glue
Da die integrierte Schemainferenzfunktion des Connectors begrenzt ist, sollten Sie ihn AWS Glue für Metadaten verwenden. Dazu müssen Sie über eine Datenbank und eine Tabelle verfügen. AWS Glue Um sie für die Verwendung mit DynamoDB zu aktivieren, müssen Sie ihre Eigenschaften bearbeiten.
Um Datenbankeigenschaften in der AWS Glue Konsole zu bearbeiten
Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS Glue Konsole unter https://console.aws.amazon.com/glue/
. -
Erweitern Sie im Navigationsbereich den Eintrag Datenkatalog, und wählen Sie dann Datenbanken aus.
Auf der Seite Databases (Datenbanken) können Sie eine vorhandene Datenbank bearbeiten oder Add Databases (Datenbank hinzufügen) auswählen, um eine zu erstellen.
-
Wählen Sie in der Liste der Datenbanken den Link für die Datenbank aus, die Sie bearbeiten möchten.
-
Wählen Sie Edit (Bearbeiten) aus.
-
Fügen Sie auf der Seite Datenbank aktualisieren unter Datenbankeinstellungen für Speicherort die Zeichenfolge hinzu
dynamo-db-flag
. Dieses Schlüsselwort gibt an, dass die Datenbank Tabellen enthält, die der Athena DynamoDB-Connector für zusätzliche Metadaten verwendet, und ist für AWS Glue andere Datenbanken als erforderlich.default
Diedynamo-db-flag
-Eigenschaft ist nützlich, um Datenbanken in Konten mit vielen Datenbanken herauszufiltern. -
Wählen Sie Update Database (Datenbank aktualisieren) aus.
Um Tabelleneigenschaften in der Konsole zu bearbeiten AWS Glue
Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS Glue Konsole unter https://console.aws.amazon.com/glue/
. -
Erweitern Sie im Navigationsbereich den Eintrag Datenkatalog, und wählen Sie dann Tabellen aus.
-
Wählen Sie auf der Tabellenseite in der Tabellenliste den verknüpften Namen der Tabelle aus, die Sie bearbeiten möchten.
-
Wählen Sie Actions (Aktionen) und Edit table (Tabelle bearbeiten).
-
Fügen Sie auf der Seite Edit table (Tabelle bearbeiten) im Abschnitt Table properties (Tabelleneigenschaften) nach Bedarf die folgenden Tabelleneigenschaften hinzu. Wenn Sie den AWS Glue DynamoDB-Crawler verwenden, werden diese Eigenschaften automatisch festgelegt.
-
DynamoDB – Zeichenfolge, die dem Athena-DynamoDB-Konnektor anzeigt, dass die Tabelle für ergänzende Metadaten verwendet werden kann. Geben Sie die
dynamodb
-Zeichenfolge in den Tabelleneigenschaften unter einem Feld mit der Bezeichnung classification (Einstufung) (exakte Übereinstimmung) ein.Anmerkung
Die Seite Tabelleneigenschaften festlegen, die Teil des Tabellenerstellungsprozesses in der AWS Glue Konsole ist, enthält einen Abschnitt Datenformat mit einem Klassifizierungsfeld. Sie können hier nicht
dynamodb
eingeben oder wählen. Nachdem Sie Ihre Tabelle erstellt haben, folgen Sie stattdessen den Schritten zum Bearbeiten der Tabelle und zum Eingeben vonclassification
unddynamodb
als Schlüssel-Wert-Paar im Abschnitt Tabelleneigenschaften. -
sourceTable— Optionale Tabelleneigenschaft, die den Namen der Quelltabelle in DynamoDB definiert. Verwenden Sie diese Option, wenn Regeln zur AWS Glue Tabellennennung Sie daran hindern, eine AWS Glue Tabelle mit demselben Namen wie Ihre DynamoDB-Tabelle zu erstellen. Beispielsweise sind Großbuchstaben in AWS Glue Tabellennamen nicht zulässig, in DynamoDB-Tabellennamen jedoch zulässig.
-
columnMapping— Optionale Tabelleneigenschaft, die Zuordnungen von Spaltennamen definiert. Verwenden Sie diese Option, wenn die Regeln zur AWS Glue Spaltenbenennung Sie daran hindern, eine AWS Glue Tabelle mit denselben Spaltennamen wie Ihre DynamoDB-Tabelle zu erstellen. Beispielsweise sind Großbuchstaben in AWS Glue Spaltennamen nicht zulässig, in DynamoDB-Spaltennamen jedoch zulässig. Es wird erwartet, dass der Eigenschaftswert im Format col1=COL1, col2=COL2 vorliegt. Beachten Sie, dass die Spaltenzuordnung nur für Spaltennamen der obersten Ebene und nicht für verschachtelte Felder gilt.
-
defaultTimeZone— Optionale Tabelleneigenschaft, die
date
aufdatetime
Werte ohne explizite Zeitzone angewendet wird. Das Festlegen dieses Werts ist eine bewährte Methode, um Diskrepanzen zwischen der Standardzeitzone der Datenquelle und der Zeitzone der Athena-Sitzung zu vermeiden. -
datetimeFormatMapping— Optionale Tabelleneigenschaft, die das
datetime
Formatdate
oder angibt, das beim Parsen von Daten aus einer Spalte destimestamp
Datentyps AWS Gluedate
oder verwendet werden soll. Wenn diese Eigenschaft nicht angegeben ist, versucht der Konnektor, ein ISO -8601-Format abzuleiten. Wenn der Konnektor das date
- oderdatetime
-Format nicht ermitteln oder die rohe Zeichenkette nicht analysieren kann, wird der Wert im Ergebnis ausgelassen.Der Wert
datetimeFormatMapping
muss das Formatcol1=someformat1,col2=someformat2
haben. Im Folgenden sind einige Beispielformate aufgeführt:yyyyMMdd'T'HHmmss ddMMyyyy'T'HH:mm:ss
Wenn Ihre Kolumne
date
- oderdatetime
-Werte ohne Zeitzone hat und Sie die Spalte in derWHERE
-Klausel verwenden möchten, legen Sie diedatetimeFormatMapping
-Eigenschaft für die Spalte fest.
-
-
Wenn Sie Ihre Spalten manuell definieren, stellen Sie sicher, dass Sie die entsprechenden Datentypen verwenden. Wenn Sie einen Crawler verwendet haben, überprüfen Sie die Spalten und Typen, die der Crawler erkannt hat.
-
Wählen Sie Save (Speichern) aus.
Erforderliche Berechtigungen
Vollständige Informationen zu den IAM Richtlinien, die für diesen Connector erforderlich sind, finden Sie im Policies
Abschnitt der Datei athena-dynamodb.yaml.
-
Amazon-S3-Schreibzugriff – Der Konnektor benötigt Schreibzugriff auf einen Speicherort in Amazon S3, um Ergebnisse aus großen Abfragen zu übertragen.
-
Athena GetQueryExecution — Der Konnektor verwendet diese Berechtigung, um einen Fast-Fail auszuführen, wenn die Upstream-Athena-Abfrage beendet wurde.
-
AWS Glue Data Catalog— Der DynamoDB-Konnektor benötigt nur Lesezugriff auf die, um AWS Glue Data Catalog Schemainformationen abzurufen.
-
CloudWatch Logs — Der Connector benötigt Zugriff auf CloudWatch Logs, um Logs zu speichern.
-
DynamoDB-Lesezugriff — Der Konnektor verwendet die
DescribeTable
Operationen,ListSchemas
,ListTables
Query
, undScan
API.
Leistung
Der Athena DynamoDB-Konnektor unterstützt parallel Scans und versucht, Prädikat-Push-Down als Teil seiner DynamoDB-Abfragen durchzuführen. Ein Hash-Schlüssel-Prädikat mit verschiedenen X
-Werten führt zu X
-Abfragen von DynamoDB. Alle anderen Prädikatszenarien führen zu einer Anzahl von Y
Scan-Aufrufen, wobei Y
heuristisch basierend auf der Größe Ihrer Tabelle und dem bereitgestellten Durchsatz bestimmt wird. Die Auswahl einer Teilmenge von Spalten führt jedoch manchmal zu einer längeren Laufzeit der Abfrageausführung.
LIMIT
-Klauseln und einfache Prädikate werden nach unten verschoben, wodurch die Menge der gescannten Daten reduziert und die Laufzeit der Abfrageausführung verkürzt wird.
LIMITKlauseln
Eine LIMIT N
-Anweisung reduziert die von der Abfrage durchsuchten Daten. Mit LIMIT N
-Pushdown gibt der Konnektor nur N
Zeilen an Athena zurück.
Prädikate
Ein Prädikat ist ein Ausdruck in der WHERE
Klausel einer SQL Abfrage, der einen booleschen Wert ergibt und Zeilen auf der Grundlage mehrerer Bedingungen filtert. Um die Funktionalität zu erweitern und die Menge der gescannten Daten zu reduzieren, kann der Athena-DynamoDB-Konnektor diese Ausdrücke kombinieren und sie direkt an DynamoDB weiterleiten.
Die folgenden Athena-DynamoDB-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
-
Boolescher Wert: AND
-
Gleichheit:EQUAL, NOT _, _EQUAL, LESS _ LESS _OR_THAN, _EQUAL, THAN _ GREATER _OR_THAN, GREATER IS_ THAN EQUAL NULL
Beispiel für einen kombinierten Pushdown
Kombinieren Sie für erweiterte Abfragefunktionen die Pushdown-Typen wie im folgenden Beispiel:
SELECT *
FROM my_table
WHERE col_a > 10 and col_b < 10
LIMIT 10
Einen Artikel über die Verwendung von Prädikat-Pushdown zur Verbesserung der Leistung in Verbundabfragen, einschließlich DynamoDB, finden Sie unter Verbessern von Verbundabfragen mit Prädikat-Pushdown in Amazon Athena
Passthrough-Abfragen
Der DynamoDB-Connector unterstützt Passthrough-Abfragen und verwendet PartiQL-Syntax. Der GetItemAPIDynamoDB-Vorgang wird nicht unterstützt. Informationen zum Abfragen von DynamoDB mit PartiQL finden Sie unter PartiQL select statements for DynamoDB im Amazon DynamoDB Developer Guide.
Verwenden Sie die folgende Syntax, um Passthrough-Abfragen mit DynamoDB zu verwenden:
SELECT * FROM TABLE(
system.query(
query => 'query_string
'
))
Das folgende Beispiel für eine DynamoDB-Passthrough-Abfrage verwendet PartiQL, um eine Liste von Fire TV Stick-Geräten zurückzugeben, deren DateWatched
Eigenschaft nach dem 24.12.22 liegt.
SELECT * FROM TABLE(
system.query(
query => 'SELECT Devices
FROM WatchList
WHERE Devices.FireStick.DateWatched[0] > '12/24/22''
))
Fehlerbehebung
Mehrere Filter in einer Sortierschlüsselspalte
Fehlermeldung: KeyConditionExpressionsdarf
nur eine Bedingung pro Schlüssel enthalten
Ursache: Dieses Problem kann in Athena-Engine-Version 3 bei Abfragen auftreten, die sowohl einen unteren als auch einen oberen Grenzfilter für eine DynamoDB-Sortierschlüsselspalte haben. Da DynamoDB nicht mehr als eine Filterbedingung für einen Sortierschlüssel unterstützt, wird ein Fehler ausgelöst, wenn der Konnektor versucht, eine Abfrage herunterzufahren, auf die beide Bedingungen angewendet wurden.
Lösung: Aktualisieren Sie die Konnektor-Version auf Version 2023.11.1 oder höher. Anweisungen zum Aktualisieren eines Konnektors finden Sie unter Aktualisieren Sie einen Datenquellenconnector.
Kosten
Die Kosten für die Nutzung des Connectors hängen von den zugrunde liegenden AWS Ressourcen ab, die verwendet werden. Da Abfragen, die Scans verwenden, eine große Anzahl von Lesekapazitätseinheiten (RCUs)
Weitere Ressourcen
-
Eine Einführung in die Verwendung des Amazon-Athena-DynamoDB-Konnektors finden Sie unter Zugreifen, Abfragen und Verbinden von Amazon-DynamoDB-Tabellen mit Athena im Leitfaden Muster von AWS Prescriptive Guidance.
-
Einen Artikel zur Verwendung des Athena DynamoDB-Konnektors zur Abfrage von Daten in DynamoDB mit Amazon SQL und zur Visualisierung von Erkenntnissen in Amazon finden Sie im AWS Big-Data-Blogbeitrag Visualisieren von Amazon QuickSight DynamoDB DynamoDB-Erkenntnissen in Amazon QuickSight mithilfe des Amazon Athena DynamoDB-Konnektors
und. AWS Glue -
Einen Artikel zur Verwendung des Amazon Athena DynamoDB-Connectors mit Amazon DynamoDB, Athena und Amazon QuickSight zur Erstellung eines einfachen Governance-Dashboards finden Sie im AWS Big-Data-Blogbeitrag Kontenübergreifende Amazon DynamoDB-Tabellen mit Amazon Athena Federated Query abfragen
. Weitere Informationen zu diesem Connector finden Sie auf der entsprechenden Website auf .com.
GitHub