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.
Amazon Athena DynamoDB Konnektor
Der Amazon-Athena-DynamoDB-Konnektor ermöglicht Amazon Athena die Kommunikation mit DynamoDB, sodass Sie Ihre Tabellen mit SQL abfragen können. Schreiboperationen wie INSERT INTO werden nicht unterstützt.
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 auf den 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 Stellen Sie einen Datenquellenconnector bereit oder Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen.
Parameter
Verwenden Sie die Lambda-Umgebungsvariablen in diesem Abschnitt, um den DynamoDB-Konnektor zu konfigurieren.
-
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-codierte Zuordnung von Anforderungsheadern und Werten für die Amazon-S3-
putObject
-Anforderung, die für den Überlauf verwendet wird (z. B.{"x-amz-server-side-encryption" : "AES256"}
). Weitere mögliche Header finden Sie PutObjectin der Amazon Simple Storage Service API-Referenz. -
kms_key_id – (Optional) Standardmäßig werden alle Daten, die an Amazon S3 gesendet werden, mit dem AES-GCM-authentifizierten Verschlüsselungsmodus und einem zufällig generierten Schlüssel verschlüsselt. Damit Ihre Lambda-Funktion stärkere Verschlüsselungsschlüssel verwendet, die von KMS generiert werden, wie
a7e63k4b-8loc-40db-a2a1-4d0en2cd8331
, können Sie eine ID einer Verschlüsselung angeben. -
disable_spill_encryption – (Optional) Bei Einstellung auf
True
, wird die Spill-Verschlüsselung deaktiviert. Die Standardeinstellung istFalse
, sodass Daten, die an S3 übertrragen werden, mit AES-GCM verschlüsselt werden - entweder mit einem zufällig generierten Schlüssel oder mit KMS zum Generieren 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 Schema-Inferenzfunktion 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 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 Spaltennamenzuordnungen 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 auf Werte angewendet wird,
date
oder aufdatetime
Werte, die keine explizite Zeitzone haben. 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 ableiten. 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 Speichern.
Erforderliche Berechtigungen
Ausführliche Informationen zu den für diesen Konnektor erforderlichen IAM-Richtlinien finden Sie im Policies
-Abschnitt der 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
,ListSchemas
,ListTables
,Query
undScan
API-Operationen.
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.
LIMIT-Klauseln
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:
-
Boolean: UND
-
Gleichheit: GLEICH, NICHT GLEICH, WENIGER_ALS, WENIGER_ODER_GLEICH, GRÖSSER_ALS, GRÖSSER_ODER_GLEICH, IST_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 GetItemDynamoDB-API-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 Einen Datenquellenconnector aktualisieren.
Kosten
Die Kosten für die Nutzung des Connectors hängen von den zugrunde liegenden AWS Ressourcen ab, die verwendet werden. Weil 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 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