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.
EMR Spark MagicCommitProtocol
À partir de la version 6.15.0 d'EMR, MagicCommitProtocol elle devient la valeur par défaut FileCommitProtocol pour Spark lors de l'utilisation du système de fichiers S3A.
MagicCommitProtocol
MagicCommitProtocol Il s'agit d'une implémentation alternative optimisée pour l'FileCommitProtocol
MagicCommitProtocol Il s'agit de l' FileCommitProtocol implémentation par défaut utilisée par Spark sur Amazon Elastic Map Reduce (EMR) lorsque le système de fichiers S3A est utilisé. Il utilise MagicCommitProtocol en interne le MagicV2Committer pour effectuer les écritures de fichiers sur Amazon S3.
Pour les opérations d'insertion statique, les MagicCommitProtocol fichiers sont écrits dans l'emplacement de sortie de la tâche pendant la phase de validation de la tâche. En revanche, pour les opérations d'insertion et de remplacement dynamiques, les fichiers écrits par tentative de tâche apparaissent uniquement dans l'emplacement de sortie de la tâche lors de la validation de la tâche. Pour ce faire, exportez les métadonnées de validation vers le pilote Spark lors de l'appel de validation de la tâche.
Permettant MagicCommitProtocol
Elle MagicCommitProtocol est activée par défaut pour Spark s'exécutant sur Amazon Elastic Map Reduce (EMR) lors de l'utilisation du système de fichiers S3A.
Pour utiliser le système de fichiers S3A, vous pouvez soit :
-
Utilisez le schéma de fichiers comme
s3a://lors de la définition de la table, de la partition ou du répertoire. -
Définissez la configuration
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystemdans le fichier core-site.xml.
Désactivation du MagicCommitProtocol
-
Vous pouvez le
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocoldéfinir sur false en le codant en dur dans unSparkConf, en le passant en tant que--confparamètre dans le shell Spark ou dansspark-submitlesspark-sqloutils Spark, ou dansconf/spark-defaults.conf. Pour plus d'informations, consultez la section Configuration de Sparkdans la documentation d'Apache Spark. L'exemple suivant montre comment désactiver MagicCommitProtocol lors de l'exécution d'une
spark-sqlcommande.spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;" -
Utilisez la classification
spark-defaultsde configuration pour définir laspark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocolpropriété sur false. Pour plus d'informations, consultez Configuration des applications.
MagicCommitProtocol considérations
-
Pour les exécuteurs d'insertion de partition statique, on Spark MagicCommitProtocol consomme une petite quantité de mémoire pour chaque fichier écrit lors d'une tentative de tâche jusqu'à ce que la tâche soit validée ou abandonnée. La quantité de mémoire consommée est négligeable dans la plupart des tâches. Aucune mémoire supplémentaire n'est requise sur le pilote Spark
-
Pour l'insertion dynamique de partitions, sur les pilotes Spark, MagicCommitProtocol il faut de la mémoire pour stocker les informations de métadonnées de chaque fichier validé jusqu'à ce que la tâche soit validée ou abandonnée. Dans la plupart des tâches, le paramètre de mémoire par défaut du pilote Spark est négligeable.
Pour les tâches qui ont des tâches de longue durée qui écrivent un grand nombre de fichiers, la mémoire que le protocole de validation consomme peut être perceptible et nécessiter des ajustements de la mémoire allouée pour Spark, en particulier pour les exécuteurs Spark. Vous pouvez régler la mémoire à l'aide de la propriété
spark.driver.memorypour les pilotes Spark et de la propriétéspark.executor.memorypour les exécuteurs Spark. À titre indicatif, une seule tâche d'écriture de 100 000 fichiers nécessite généralement 200 Mo de mémoire supplémentaires. Pour plus d'informations, consultez Propriétés d'applicationsdans la Documentation de configuration Apache Spark.