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 derhive-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, diedynamodb.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 dermapred-site
Klassifizierung des start-job-run Befehls auf Serverless fest. EMR