Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Considérations
Notez ces comportements et limitations lorsque vous utilisez le connecteur DynamoDB avec Apache Spark ou Apache Hive.
Considérations relatives à l'utilisation du connecteur DynamoDB avec Apache Spark
-
Spark SQL ne prend pas en charge la création d'une table Hive avec l'option storage-handler. Pour plus d'informations, consultez la section Spécification du format de stockage pour les tables Hive
dans la documentation d'Apache Spark. -
Spark SQL ne prend pas en charge l'
STORED BY
opération avec le gestionnaire de stockage. Si vous souhaitez interagir avec une table DynamoDB via une table Hive externe, utilisez d'abord Hive pour créer la table. -
Pour convertir une requête en requête DynamoDB, le connecteur DynamoDB utilise le prédicat pushdown. Le prédicat pushdown filtre les données en fonction d'une colonne mappée à la clé de partition d'une table DynamoDB. Le pushdown des prédicats ne fonctionne que lorsque vous utilisez le connecteur avec SparkSQL, et non avec le. MapReduce API
Considérations relatives à l'utilisation du connecteur DynamoDB avec Apache Hive
Réglage du nombre maximum de mappeurs
-
Si vous utilisez la
SELECT
requête pour lire les données d'une table Hive externe mappée à DynamoDB, le nombre de tâches cartographiques EMR sur Serverless est calculé comme le débit de lecture total configuré pour la table DynamoDB, divisé par le débit par tâche cartographique. Le débit par défaut par tâche cartographique est de 100. -
La tâche Hive peut utiliser le nombre de tâches cartographiques au-delà du nombre maximum de conteneurs configurés par application EMR Serverless, en fonction du débit de lecture configuré pour DynamoDB. En outre, une requête Hive de longue durée peut consommer toute la capacité de lecture allouée à la table DynamoDB. Cela a un impact négatif sur les autres utilisateurs.
-
Vous pouvez utiliser cette
dynamodb.max.map.tasks
propriété pour définir une limite supérieure pour les tâches cartographiques. Vous pouvez également utiliser cette propriété pour ajuster la quantité de données lues par chaque tâche cartographique en fonction de la taille du conteneur de tâches. -
Vous pouvez définir la
dynamodb.max.map.tasks
propriété au niveau de la requête Hive ou dans lahive-site
classification de la start-job-run commande. Cette valeur doit être supérieure ou égale à 1. Lorsque Hive traite votre requête, la tâche Hive qui en résulte n'utilise que les valeurs indiquéesdynamodb.max.map.tasks
lors de la lecture dans la table DynamoDB.
Réglage du débit d'écriture par tâche
-
Le débit d'écriture par tâche sur EMR Serverless est calculé comme le débit d'écriture total configuré pour une table DynamoDB, divisé par la valeur de la propriété.
mapreduce.job.maps
Pour Hive, la valeur par défaut de cette propriété est 2. Ainsi, les deux premières tâches de la phase finale d'une tâche Hive peuvent consommer tout le débit d'écriture. Cela entraîne une limitation des écritures d'autres tâches dans le même travail ou dans d'autres tâches. -
Pour éviter la limitation de l'écriture, vous pouvez définir la valeur de la
mapreduce.job.maps
propriété en fonction du nombre de tâches de l'étape finale ou du débit d'écriture que vous souhaitez allouer par tâche. Définissez cette propriété dans lamapred-site
classification de la start-job-run commande sur EMR Serverless.