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 È un'implementazione alternativa ottimizzata per la scrittura di file con EMR Spark su 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 https://docs.aws.amazon.com/emr/latest/ReleaseGuide/s3a-magicv2-committer.html MagicV2Committer per eseguire le scritture dei file su Amazon S3.
Per le operazioni di inserimento statico, MagicCommitProtocol scrive i file nella posizione di output del lavoro durante la fase di commit dell'attività. Al contrario, per le operazioni di sovrascrittura con inserimento dinamico, i file scritti dai tentativi di operazione vengono visualizzati nella posizione di output del lavoro solo al momento del commit del lavoro. Ciò si ottiene esportando nuovamente i metadati di commit nel driver Spark durante la chiamata di task commit.
Abilitazione MagicCommitProtocol
MagicCommitProtocol È abilitata 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 dei file come
s3a://quando definisci la tabella, la partizione o la directory. -
Imposta la configurazione
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystemin core-site.xml.
Disabilitare il MagicCommitProtocol
-
Puoi
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocolimpostarlo su false codificandolo in aSparkConf, passandolo come--confparametro nella shell di Spark o negli strumenti ospark-submitin.spark-sqlconf/spark-defaults.confPer ulteriori informazioni, consulta la configurazione di Sparknella documentazione di Apache Spark. L'esempio seguente mostra come disattivare MagicCommitProtocol durante l'esecuzione di un comando.
spark-sqlspark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;" -
Utilizzate la classificazione della
spark-defaultsconfigurazione per impostare laspark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocolproprietà su false. Per ulteriori informazioni, consulta la sezione Configurazione delle applicazioni.
MagicCommitProtocol considerazioni
-
Per l'inserimento di partizioni statiche, negli esecutori di Spark, MagicCommitProtocol consuma una piccola quantità di memoria per ogni file scritto da un tentativo di operazione fino a quando l'operazione non viene confermata o interrotta. Nella maggior parte dei processi la quantità di memoria consumata è trascurabile. Non è richiesta memoria aggiuntiva sul driver Spark
-
Per l'inserimento dinamico delle partizioni, sui driver Spark, è MagicCommitProtocol necessaria una memoria per memorizzare le informazioni sui metadati di ogni file salvato fino a quando il lavoro non viene eseguito o interrotto. 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.memoryper i driver Spark e la proprietàspark.executor.memoryper gli esecutori Spark. Come linea guida, una singola attività di scrittura di 100.000 file richiederebbe in genere altri 200 MB di memoria. Per ulteriori informazioni, consulta le Proprietà delle applicazioninella documentazione relativa alla configurazione di Apache Spark.