As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
EMR Spark MagicCommitProtocol
Do EMR 6.15.0 em diante, MagicCommitProtocol torna-se o padrão FileCommitProtocol para o Spark ao utilizar o sistema de arquivos S3A.
MagicCommitProtocol
MagicCommitProtocol É uma implementação alternativa do FileCommitProtocol
Essa MagicCommitProtocol é a FileCommitProtocol implementação padrão usada pelo Spark em execução no Amazon Elastic Map Reduce (EMR) quando o sistema de arquivos S3A é utilizado. O usa MagicCommitProtocol internamente o MagicV2Committer para realizar as gravações de arquivos no Amazon S3.
Para operações de inserção estática, MagicCommitProtocol ele grava os arquivos no local de saída do trabalho durante a fase de confirmação da tarefa. Por outro lado, para operações dinâmicas de substituição por inserção, os arquivos gravados por tentativas de tarefa só aparecem no local de saída do trabalho após a confirmação do trabalho. Isso é feito exportando os metadados de confirmação de volta para o driver do Spark na chamada de confirmação da tarefa.
Habilitando MagicCommitProtocol
O MagicCommitProtocol é habilitado por padrão para o Spark executado no Amazon Elastic Map Reduce (EMR) ao usar o sistema de arquivos S3A.
Para usar o sistema de arquivos S3A, você pode:
-
Use o esquema de arquivos como
s3a://
ao definir a tabela, a partição ou o diretório. -
Defina a configuração
fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
em core-site.xml.
Desativando o MagicCommitProtocol
-
Você pode
spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
definir como false codificando-o em umSparkConf
, passando-o como um--conf
parâmetro no shell do Spark ou nasspark-sql
ferramentas, ouspark-submit
em.conf/spark-defaults.conf
Para obter mais informações, consulte Configuração do Sparkna documentação do Apache Spark. O exemplo a seguir mostra como desabilitar MagicCommitProtocol durante a execução de um
spark-sql
comando.spark-sql \ --conf spark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol=false \ -e "INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;"
-
Use a classificação
spark-defaults
de configuração para definir aspark.sql.execution.datasources.SQLEmrOptimizedCommitProtocol.leverageMagicCommitProtocol
propriedade como falsa. Para obter mais informações, consulte Configure applications.
MagicCommitProtocol considerações
-
Para inserção de partição estática, nos executores do Spark, o MagicCommitProtocol consome uma pequena quantidade de memória para cada arquivo gravado por uma tentativa de tarefa até que a tarefa seja confirmada ou abortada. Na maioria dos trabalhos, a quantidade de memória consumida é insignificante. Não há necessidade de memória extra no driver Spark
-
Para inserção dinâmica de partições, nos drivers do Spark, é MagicCommitProtocol necessária memória para armazenar informações de metadados de cada arquivo confirmado até que o trabalho seja confirmado ou abortado. Na maioria dos trabalhos, a configuração padrão de memória do driver do Spark é insignificante.
Para trabalhos que têm tarefas de execução prolongada que gravam um grande número de arquivos, a memória que o confirmador consome pode ser perceptível e precisar de ajustes na memória alocada para executores do Spark. Você pode ajustar a memória usando a
spark.driver.memory
propriedade dos drivers do Spark e aspark.executor.memory
propriedade dos executores do Spark. Como diretriz, uma única tarefa de gravação de 100.000 arquivos normalmente exigiria 200 MB adicionais de memória. Para obter mais informações, consulte Propriedades da aplicaçãona documentação de configuração do Apache Spark.