Considérations - Amazon EMR

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 BYopé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 la hive-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ées dynamodb.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 la mapred-site classification de la start-job-run commande sur EMR Serverless.