Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
EMR Spark MagicCommitProtocol
A partire da EMR 6.15.0, MagicCommitProtocol diventa l'impostazione predefinita FileCommitProtocol per Spark quando si utilizza il file system S3A.
MagicCommitProtocol
MagicCommitProtocol Si tratta di un'implementazione alternativa ottimizzata per FileCommitProtocol
MagicCommitProtocol È l' FileCommitProtocol implementazione predefinita utilizzata da Spark in esecuzione su Amazon Elastic Map Reduce (EMR) quando viene utilizzato il file system S3A. Utilizza MagicCommitProtocol internamente MagicV2Committer per eseguire le scritture di file su Amazon S3.
Per le operazioni di inserimento statiche, MagicCommitProtocol scrive i file nella posizione di output del lavoro durante la fase di conferimento dell'attività. Al contrario, per le operazioni dinamiche di sovrascrittura degli inserti, i file scritti dai tentativi di operazione vengono visualizzati nella posizione di output del lavoro solo dopo il completamento del lavoro. Ciò si ottiene esportando nuovamente i metadati di commit nel driver Spark durante la chiamata di commit del task.
Abilitazione MagicCommitProtocol
MagicCommitProtocol È abilitato per impostazione predefinita per Spark in esecuzione su Amazon Elastic Map Reduce (EMR) quando si utilizza il file system S3A.
Per utilizzare il file system S3A, puoi:
-
Usa lo schema di file come
s3a://
quando definisci la tabella, la partizione o la directory. -
Imposta la configurazione
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
in core-site.xml.
Disabilitazione di MagicCommitProtocol
-
Puoi
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
impostarlo su false codificandolo in aSparkConf
, passandolo come--conf
parametro nella shell Spark ospark-submit
andspark-sql
tools, oppure in.conf/spark-defaults.conf
Per ulteriori informazioni, consulta la configurazione di Spark nella documentazione di Apache Spark. L'esempio seguente mostra come disabilitare MagicCommitProtocol durante l'esecuzione di un comando.
spark-sql
spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;"
-
Utilizzate la classificazione di
spark-defaults
configurazione per impostare laspark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
proprietà su false. Per ulteriori informazioni, consulta la sezione Configurazione delle applicazioni.
MagicCommitProtocol considerazioni
-
Per l'inserimento di partizioni statiche, negli esecutori Spark, MagicCommitProtocol consuma una piccola quantità di memoria per ogni file scritto da un tentativo di operazione fino a quando l'operazione non viene completata o interrotta. Nella maggior parte dei processi la quantità di memoria consumata è trascurabile. Non è richiesta alcuna memoria aggiuntiva per il driver Spark
-
Per l'inserimento dinamico delle partizioni, sui driver Spark, è MagicCommitProtocol necessaria memoria per archiviare le informazioni sui metadati di ogni file salvato fino al completamento o all'interruzione del lavoro. Nella maggior parte dei processi, l'impostazione predefinita della memoria del driver Spark è trascurabile.
Per i processi che presentano attività di lunga esecuzione che scrivono un numero elevato di file, la memoria che il protocollo di commit consuma può essere notevole e rende necessario adeguare la memoria allocata per Spark, specialmente per gli esecutori Spark. È possibile regolare la memoria utilizzando la proprietà
spark.driver.memory
per i driver Spark e la proprietàspark.executor.memory
per gli esecutori Spark. Come linea guida, una singola operazione di scrittura di 100.000 file richiederebbe in genere 200 MB di memoria aggiuntivi. Per ulteriori informazioni, consulta le Proprietà delle applicazioninella documentazione relativa alla configurazione di Apache Spark.