Laden von Daten aus einer Amazon-DynamoDB-Tabelle - Amazon Redshift

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.

Laden von Daten aus einer Amazon-DynamoDB-Tabelle

Sie können den COPY-Befehl verwenden, um eine Tabelle mit Daten aus einer einzelnen Amazon-DynamoDB-Tabelle zu laden.

Wichtig

Die Amazon DynamoDB-Tabelle, die die Daten bereitstellt, muss in derselben AWS Region wie Ihr Cluster erstellt werden, es sei denn, Sie verwenden die REGION Option, um die AWS Region anzugeben, in der sich die Amazon DynamoDB-Tabelle befindet.

Der COPY-Befehl nutzt die Architektur für die massiv parallele Verarbeitung (Massively Parallel Processing, MPP) von Amazon Redshift, um Daten parallel aus einer Amazon-DynamoDB-Tabelle zu lesen und zu laden. Sie können die Parallelverarbeitung maximal nutzen, indem Sie für Ihre Amazon-Redshift-Tabellen Verteilungsstile festlegen. Weitere Informationen finden Sie unter Arbeiten mit Datenverteilungsstilen.

Wichtig

Wenn der COPY-Befehl Daten aus der Amazon-DynamoDB-Tabelle liest, ist die entsprechende Datenübertragung Teil des bereitgestellten Durchsatzes dieser Tabelle.

Um die übermäßige Nutzung des bereitgestellten Lesedurchsatzes zu vermeiden, wird empfohlen, keine Daten aus Amazon-DynamoDB-Tabellen zu laden, die sich in Produktionsumgebungen befinden. Wenn Sie Daten aus Produktionstabellen laden, wird empfohlen, die Option READRATIO auf einen sehr viel niedrigeren Wert als den durchschnittlichen Prozentsatz ungenutzten bereitgestellten Durchsatzes festzulegen. Eine niedrige READRATIO-Einstellung hilft, Ablehnungsprobleme zu minimieren. Um den gesamten bereitgestellten Durchsatz einer Amazon-DynamoDB-Tabelle zu nutzen, legen Sie READRATIO auf 100 fest.

Der COPY-Befehl gleicht mittels folgender Regeln Attributnamen in den Elementen, die aus der DynamoDB-Tabelle abgerufen wurden, mit Spaltennamen in einer vorhandenen Amazon-Redshift-Tabelle ab:

  • Amazon-Redshift-Tabellenspalten werden ohne Berücksichtigung von Groß- und Kleinschreibung mit Amazon-DynamoDB-Elementattributen abgeglichen. Wenn ein Element in der DynamoDB-Tabelle mehrere Attribute enthält, die sich nur nach Groß- und Kleinschreibung unterscheiden, wie „price“ und „PRICE“, schlägt der COPY-Befehl fehl.

  • Amazon-Redshift-Tabellenspalten, die mit keinem Attribut in der Amazon-DynamoDB-Tabelle übereinstimmen, werden entweder als NULL oder leer geladen, abhängig von dem Wert, der mit der Option EMPTYASNULL im Befehl COPY angegeben ist.

  • Amazon-DynamoDB-Attribute, die mit keiner Spalte in der Amazon-Redshift-Tabelle übereinstimmen, werden verworfen. Attribute werden gelesen, bevor sie abgeglichen werden. Daher verbrauchen auch verworfene Attribute einen Teil des bereitgestellten Durchsatzes dieser Tabelle.

  • Es werden nur Amazon-DynamoDB-Attribute mit skalaren STRING- und NUMBER-Datentypen unterstützt. Die Amazon-DynamoDB-Datentypen BINARY und SET werden nicht unterstützt. Wenn ein COPY-Befehl versucht, ein Attribut zu laden, dessen Datentyp nicht unterstützt wird, schlägt der Befehl fehl. Wenn das Attribut mit keiner Amazon-Redshift-Tabellenspalte übereinstimmt, versucht COPY nicht, es zu laden, und es tritt kein Fehler auf.

Der COPY-Befehl verwendet die folgende Syntax, um Daten aus einer Amazon-DynamoDB-Tabelle zu laden:

copy <redshift_tablename> from 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';

Die Werte für die Autorisierung sind die AWS Anmeldeinformationen, die für den Zugriff auf die Amazon DynamoDB-Tabelle benötigt werden. Wenn diese Anmeldeinformationen einem Benutzer entsprechen, muss dieser Benutzer SCAN- und DESCRIBE-Berechtigungen für die Amazon-DynamoDB-Tabelle besitzen, die geladen wird.

Die Werte für die Autorisierung geben die AWS Autorisierung an, die Ihr Cluster für den Zugriff auf die Amazon DynamoDB-Tabelle benötigt. Die Berechtigung muss SCAN und DESCRIBE für die Amazon-DynamoDB-Tabelle einschließen, die geladen wird. Weitere Informationen zu erforderlichen Berechtigungen finden Sie unter IAM-Berechtigungen für COPY, UNLOAD und CREATE LIBRARY. Die bevorzugte Methode für die Authentifizierung besteht in der Angabe des Parameters IAM_ROLE und des Amazon-Ressourcennamens (ARN) für eine IAM-Rolle mit den notwendigen Berechtigungen. Weitere Informationen finden Sie unter Rollenbasierte Zugriffskontrolle.

Zur Authentifizierung mit dem Parameter IAM_ROLE, < aws-account-id > und <role-name>wie in der folgenden Syntax dargestellt.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

Das folgende Beispiel zeigt die Authentifizierung unter Verwendung einer IAM-Rolle.

copy favoritemovies from 'dynamodb://ProductCatalog' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Weitere Informationen zu anderen Autorisierungsoptionen finden Sie unter . Autorisierungsparameter

Wenn Sie Ihre Daten validieren möchten, ohne die Tabelle tatsächlich zu laden, verwenden Sie die Option NOLOAD mit dem Befehl COPY.

Im folgenden Beispiel wird die FAVORITEMOVIES-Tabelle mit Daten aus der DynamoDB-Tabelle geladen. my-favorite-movies-table Die Leseaktivität kann bis zu 50 % des bereitgestellten Durchsatzes verbrauchen.

copy favoritemovies from 'dynamodb://my-favorite-movies-table' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' readratio 50;

Um den Durchsatz zu maximieren, lädt der COPY-Befehl Daten aus einer Amazon-DynamoDB-Tabelle aus allen Datenverarbeitungsknoten im Cluster parallel.

Bereitgestellter Durchsatz mit automatischer Kompression

Standardmäßig wendet der COPY-Befehl eine automatische Kompression an, wenn Sie eine leere Tabelle ohne Kompressionskodierung angeben. Die automatische Komprimierungsanalyse untersucht zunächst stichprobenartig eine große Zahl von Zeilen aus der Amazon-DynamoDB-Tabelle. Die Größe der Stichprobe basiert auf dem Wert des Parameters COMPROWS. Der Standardwert ist 100.000 Zeilen pro Slice.

Nach der Untersuchung der Stichprobe werden die Stichprobenzeilen verworfen und die gesamte Tabelle wird geladen. Daher werden zahlreiche Zeilen zweimal gelesen. Weitere Informationen zur Funktionsweise der automatischen Kompression finden Sie unter Laden von Tabellen mit automatischer Kompression.

Wichtig

Wenn der COPY-Befehl Daten aus der Amazon-DynamoDB-Tabelle liest, einschließlich der Stichprobenzeilen, ist die entsprechende Datenübertragung Teil des bereitgestellten Durchsatzes dieser Tabelle.

Laden von Multibyte-Daten aus Amazon DynamoDB

Wenn Ihre Daten Multibyte-Zeichen enthalten, die andere als ASCII-Zeichen verwenden (beispielsweise chinesische oder kyrillische Zeichen), müssen Sie die Daten in VARCHAR-Spalten laden. Der VARCHAR-Datentyp unterstützt UTF-8-Zeichen mit vier Bytes. Der CHAR-Datentyp unterstützt jedoch nur ASCII-Zeichen mit einem Byte. Sie können keine Zeichen mit fünf Bytes oder mehr in Amazon-Redshift-Tabellen laden. Weitere Informationen zu CHAR und VARCHAR finden Sie unter Datentypen.