Überlegungen - Amazon EMR

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.

Überlegungen

Beachten Sie diese Verhaltensweisen und Einschränkungen, wenn Sie den DynamoDB-Connector mit Apache Spark oder Apache Hive verwenden.

Überlegungen zur Verwendung des DynamoDB-Connectors mit Apache Spark

  • Spark unterstützt die Erstellung einer Hive-Tabelle mit der Storage-Handler-Option SQL nicht. Weitere Informationen finden Sie unter Speicherformat für Hive-Tabellen angeben in der Apache Spark-Dokumentation.

  • Spark unterstützt den STORED BY Vorgang mit dem Storage-Handler SQL nicht. Wenn Sie über eine externe Hive-Tabelle mit einer DynamoDB-Tabelle interagieren möchten, verwenden Sie Hive, um die Tabelle zuerst zu erstellen.

  • Um eine Abfrage in eine DynamoDB-Abfrage zu übersetzen, verwendet der DynamoDB-Connector das Prädikat Pushdown. Das Prädikat Pushdown filtert Daten nach einer Spalte, die dem Partitionsschlüssel einer DynamoDB-Tabelle zugeordnet ist. Predicate Pushdown funktioniert nur, wenn Sie den Konnektor mit Spark verwenden, und nicht mit dem. SQL MapReduce API

Überlegungen zur Verwendung des DynamoDB-Connectors mit Apache Hive

Einstellung der maximalen Anzahl von Mappern

  • Wenn Sie die SELECT Abfrage verwenden, um Daten aus einer externen Hive-Tabelle zu lesen, die DynamoDB zugeordnet ist, wird die Anzahl der Zuordnungsaufgaben auf EMR Serverless als der für die DynamoDB-Tabelle konfigurierte Gesamtlesedurchsatz geteilt durch den Durchsatz pro Zuordnungsaufgabe berechnet. Der Standarddurchsatz pro Kartenaufgabe ist 100.

  • Der Hive-Job kann je nach dem für DynamoDB konfigurierten Lesedurchsatz die Anzahl der Zuordnungsaufgaben verwenden, die über die maximale Anzahl von Containern hinausgeht, die pro EMR serverloser Anwendung konfiguriert sind. Außerdem kann eine Hive-Abfrage mit langer Laufzeit die gesamte bereitgestellte Lesekapazität der DynamoDB-Tabelle verbrauchen. Dies wirkt sich negativ auf andere Benutzer aus.

  • Sie können die dynamodb.max.map.tasks Eigenschaft verwenden, um eine Obergrenze für Kartenaufgaben festzulegen. Sie können diese Eigenschaft auch verwenden, um die von jeder Kartenaufgabe gelesene Datenmenge auf der Grundlage der Größe des Aufgabencontainers zu optimieren.

  • Sie können die dynamodb.max.map.tasks Eigenschaft auf Hive-Abfrageebene oder in der hive-site Klassifizierung des start-job-run Befehls festlegen. Dieser Wert muss gleich oder größer 1 sein. Wenn Hive Ihre Abfrage verarbeitet, verwendet der resultierende Hive-Job nicht mehr als die Werte, die dynamodb.max.map.tasks beim Lesen aus der DynamoDB-Tabelle angegeben wurden.

Den Schreibdurchsatz pro Aufgabe optimieren

  • Der Schreibdurchsatz pro Aufgabe auf EMR Serverless wird berechnet als der gesamte Schreibdurchsatz, der für eine DynamoDB-Tabelle konfiguriert ist, geteilt durch den Wert der Eigenschaft. mapreduce.job.maps Für Hive ist der Standardwert dieser Eigenschaft 2. Somit können die ersten beiden Aufgaben in der letzten Phase des Hive-Jobs den gesamten Schreibdurchsatz verbrauchen. Dies führt zu einer Drosselung der Schreibvorgänge anderer Aufgaben im selben Job oder in anderen Jobs.

  • Um Schreibeinschränkungen zu vermeiden, können Sie den Wert der mapreduce.job.maps Eigenschaft auf der Grundlage der Anzahl der Aufgaben in der letzten Phase oder des Schreibdurchsatzes festlegen, den Sie pro Aufgabe zuweisen möchten. Legen Sie diese Eigenschaft in der mapred-site Klassifizierung des start-job-run Befehls auf Serverless fest. EMR