Solucionar problemas de erros no Spark
Se você encontrar erros no AWS Glue, use as seguintes soluções para ajudar você a encontrar a origem dos problemas e corrigi-los.
nota
O repositório do AWS Glue no GitHub contém mais orientações para a solução de problemas em Perguntas frequentes do AWS Glue
Tópicos
- Erro: Resource unavailable (Recurso indisponível)
- Erro: Could not find S3 endpoint or NAT gateway for subnetId in VPC (Não foi possível encontrar o endpoint do S3 nem o gateway NAT para subnetId na VPC)
- Erro: Inbound rule in security group required (A regra de entrada no grupo de segurança é obrigatória)
- Erro: Outbound rule in security group required (A regra de saída no grupo de segurança é obrigatória)
- Erro: falha na execução do trabalho porque o perfil passado deveria receber as permissões de assumir o perfil para o serviço AWS Glue
- Erro: a ação DescribeVpcEndpoints não está autorizada. Não foi possível validar o ID da VPC vpc-id
- Erro: a ação DescribeRouteTables não está autorizada. Não é possível validar o ID da sub-rede Subnet-id no ID da VPC vpc-id
- Erro: Failed to call ec2:DescribeSubnets (Falha ao chamar ec2:DescribeSubnets)
- Erro: Failed to call ec2:DescribeSecurityGroups (Falha ao chamar ec2:DescribeSecurityGroups)
- Erro: Could not find subnet for AZ (Não foi possível encontrar uma sub-rede para zona de disponibilidade)
- Erro: Job run exception when writing to a JDBC target (Exceção de execução de trabalho ao gravar um destino JDBC)
- Erro: Amazon S3: a operação não é válida para a classe de armazenamento do objeto
- Erro: Amazon S3 timeout (Tempo limite do Amazon S3)
- Erro: Amazon S3 access denied (Acesso negado ao Amazon S3)
- Erro: Amazon S3 access key ID does not exist (O ID da chave de acesso do Amazon S3 não existe)
- Erro: falha na execução do trabalho ao acessar o Amazon S3 com um URI s3a://
- Erro: Amazon S3 service token expired (O token do serviço do Amazon S3 expirou)
- Erro: No private DNS for network interface found (Nenhum DNS privado foi encontrado na interface de rede)
- Erro: Development endpoint provisioning failed (Falha no provisionamento do endpoint de desenvolvimento)
- Erro: Notebook server CREATE_FAILED (Servidor de cadernos com status CREATE_FAILED)
- Erro: Local notebook fails to start (Falha ao iniciar o caderno local)
- Erro: Running crawler failed (Falha na execução do crawler)
- Erro: Partitions were not updated (As partições não foram atualizadas)
- Erro: Job bookmark update failed due to version mismatch (A atualização do marcador de trabalho falhou devido à incompatibilidade da versão)
- Erro: A job is reprocessing data when job bookmarks are enabled (Um trabalho está reprocessando dados quando marcadores do trabalho estão habilitados)
- Erro: comportamento de failover entre VPCs no AWS Glue
Erro: Resource unavailable (Recurso indisponível)
Se o AWS Glue retornar uma mensagem de recurso indisponível, você poderá visualizar as mensagens ou logs de erro para saber mais sobre o problema. As tarefas a seguir descrevem métodos gerais para a solução de um problema.
-
Para quaisquer conexões e endpoints de desenvolvimento que você usar, verifique se o seu cluster não ficou sem interfaces de rede elástica.
Erro: Could not find S3 endpoint or NAT gateway for subnetId in VPC (Não foi possível encontrar o endpoint do S3 nem o gateway NAT para subnetId na VPC)
Verifique o ID da sub-rede e o ID da VPC na mensagem para diagnosticar o problema.
-
Verifique se você possui um endpoint da VPC do Amazon S3 configurado (necessário para uso com o AWS Glue). Além disso, verifique seu gateway NAT se ele for parte da configuração. Para ter mais informações, consulte Endpoints da Amazon VPC para o Amazon S3.
Erro: Inbound rule in security group required (A regra de entrada no grupo de segurança é obrigatória)
Pelo menos um security group precisa abrir todas as portas de entrada. Para limitar o tráfego, o security group de origem na sua regra de entrada pode ser restrito ao mesmo security group.
-
Para todas as conexões que você usar, verifique se seu security group contém uma regra de entrada de autorreferenciada. Para ter mais informações, consulte Configurar o acesso de rede aos armazenamentos de dados.
-
Ao usar um endpoint de desenvolvimento, verifique se seu security group contém para uma regra de entrada de autorreferenciada. Para ter mais informações, consulte Configurar o acesso de rede aos armazenamentos de dados.
Erro: Outbound rule in security group required (A regra de saída no grupo de segurança é obrigatória)
Pelo menos um security group precisa abrir todas as portas de saída. Para limitar o tráfego, o security group de origem na sua regra de saída pode ser restrito ao mesmo security group.
-
Para todas as conexões que você usar, verifique se seu security group contém uma regra de saída de autorreferenciada. Para ter mais informações, consulte Configurar o acesso de rede aos armazenamentos de dados.
-
Ao usar um endpoint de desenvolvimento, verifique se seu security group contém para uma regra de saída de autorreferenciada. Para ter mais informações, consulte Configurar o acesso de rede aos armazenamentos de dados.
Erro: falha na execução do trabalho porque o perfil passado deveria receber as permissões de assumir o perfil para o serviço AWS Glue
O usuário que define um trabalho precisa ter permissão para iam:PassRole
no AWS Glue.
-
Quando um usuário cria um trabalho do AWS Glue, confirme se a função do usuário contém uma política com
iam:PassRole
para o AWS Glue. Para ter mais informações, consulte Etapa 3: anexar uma política aos usuários ou grupos que acessam o AWS Glue.
Erro: a ação DescribeVpcEndpoints não está autorizada. Não foi possível validar o ID da VPC vpc-id
-
Verifique a política transmitida para o AWS Glue pela permissão
ec2:DescribeVpcEndpoints
.
Erro: a ação DescribeRouteTables não está autorizada. Não é possível validar o ID da sub-rede Subnet-id no ID da VPC vpc-id
-
Verifique a política transmitida para o AWS Glue pela permissão
ec2:DescribeRouteTables
.
Erro: Failed to call ec2:DescribeSubnets (Falha ao chamar ec2:DescribeSubnets)
-
Verifique a política transmitida para o AWS Glue pela permissão
ec2:DescribeSubnets
.
Erro: Failed to call ec2:DescribeSecurityGroups (Falha ao chamar ec2:DescribeSecurityGroups)
-
Verifique a política transmitida para o AWS Glue pela permissão
ec2:DescribeSecurityGroups
.
Erro: Could not find subnet for AZ (Não foi possível encontrar uma sub-rede para zona de disponibilidade)
-
A zona de disponibilidade pode estar indisponível para o AWS Glue. Crie e use uma nova sub-rede em uma zona de disponibilidade diferente da especificada na mensagem.
Erro: Job run exception when writing to a JDBC target (Exceção de execução de trabalho ao gravar um destino JDBC)
Ao executar um trabalho que grava em um destino JDBC, ele pode encontrar erros nas seguintes situações:
-
Se o seu trabalho gravar em uma tabela do Microsoft SQL Server, e a tabela possuir colunas definidas como tipo
Boolean
, ela deverá ser predefinida no banco de dados do SQL Server. Ao definir o trabalho no console do AWS Glue usando um destino do SQL Server com a opção Create tables in your data target (Criar tabelas no seu destino de dados), não mapeie nenhuma coluna de origem para uma coluna de destino com tipo de dadosBoolean
. Você poderá encontrar um erro quando o trabalho for executado.Você pode evitar fazendo o seguinte:
-
Escolha uma tabela existente com a coluna Boolean.
-
Edite a transformação
ApplyMapping
e mapeie a coluna Boolean na fonte para um número ou uma string no destino. -
Edite a transformação
ApplyMapping
para remover a coluna Boolean da fonte.
-
-
Se o seu trabalho escrever em uma tabela Oracle, será necessário ajustar o comprimento dos nomes dos objetos Oracle. Em algumas versões do Oracle, o comprimento máximo do identificador é limitado a 30 ou 128 bytes. Esse limite afeta os nomes das tabelas e os nomes das colunas dos armazenamentos de dados de destino Oracle.
Você pode evitar fazendo o seguinte:
-
Nomeie as tabelas de destino Oracle de acordo com o limite da sua versão.
-
Os nomes de coluna padrão são gerados a partir dos nomes dos campos nos dados. Quando os nomes das colunas forem mais longos do que o limite, use transformações
ApplyMapping
ouRenameField
para alterar o nome da coluna de modo que ela fique dentro do limite.
-
Erro: Amazon S3: a operação não é válida para a classe de armazenamento do objeto
Se o AWS Glue retornar esse erro, seu trabalho do AWS Glue pode estar lendo dados de tabelas que têm partições em vários níveis de classe de armazenamento do Amazon S3.
-
Ao usar exclusões de classe de armazenamento, você pode garantir que seus trabalhos do AWS Glue funcionarão em tabelas com partições entre esses níveis de classe de armazenamento. Sem exclusões, trabalhos que leem dados desses níveis falham com o seguinte erro:
AmazonS3Exception: The operation is not valid for the object's storage class
.Para ter mais informações, consulte Excluir classes de armazenamento do Amazon S3.
Erro: Amazon S3 timeout (Tempo limite do Amazon S3)
Se o AWS Glue retornar um erro de tempo limite de conexão, é possível que ele esteja tentando acessar um bucket do Amazon S3 em outra região da AWS.
-
Um endpoint da VPC do Amazon S3 pode rotear tráfego somente para os buckets de uma região da AWS. Se você precisar se conectar aos buckets em outras regiões, tente usar um gateway NAT como uma solução alternativa. Para obter mais informações, consulte Gateways NAT.
Erro: Amazon S3 access denied (Acesso negado ao Amazon S3)
Se o AWS Glue retornar um erro de acesso negado a um bucket ou objeto do Amazon S3, é possível que a função do IAM fornecida não possua uma política com permissão para o seu datastore.
-
Um trabalho de ETL precisa de acesso ao datastore do Amazon S3 usado como fonte ou destino. Um crawler precisa de acesso ao datastore do Amazon S3 que ele rastreia. Para ter mais informações, consulte Etapa 2: criar um perfil do IAM para o AWS Glue.
Erro: Amazon S3 access key ID does not exist (O ID da chave de acesso do Amazon S3 não existe)
Se, ao executar um trabalho, o AWS Glue retornar um erro informando que o ID de chave de acesso não existe, é possível que:
-
Um trabalho de ETL usa uma função do IAM para acessar os armazenamentos de dados. Verifique se a função do IAM para o seu trabalho não foi excluída antes do início dele.
-
Uma função do IAM contém permissões para acessar seus armazenamentos de dados. Verifique se as políticas anexadas do Amazon S3 que contêm
s3:ListBucket
estão corretas.
Erro: falha na execução do trabalho ao acessar o Amazon S3 com um URI s3a://
Se a execução de um trabalho retornar um erro como Failed to parse XML document with handler class (Falha ao analisar um documento XML com a classe handler), pode ser devido a uma falha ao tentar listar centenas de arquivos usando um URI s3a://
. Acesse seu datastore usando um URI s3://
. O rastreamento de exceções a seguir destaca os erros a serem procurados:
1. com.amazonaws.SdkClientException: Failed to parse XML document with handler class com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser$ListBucketHandler 2. at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseXmlInputStream(XmlResponsesSaxParser.java:161) 3. at com.amazonaws.services.s3.model.transform.XmlResponsesSaxParser.parseListBucketObjectsResponse(XmlResponsesSaxParser.java:317) 4. at com.amazonaws.services.s3.model.transform.Unmarshallers$ListObjectsUnmarshaller.unmarshall(Unmarshallers.java:70) 5. at com.amazonaws.services.s3.model.transform.Unmarshallers$ListObjectsUnmarshaller.unmarshall(Unmarshallers.java:59) 6. at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:62) 7. at com.amazonaws.services.s3.internal.S3XmlResponseHandler.handle(S3XmlResponseHandler.java:31) 8. at com.amazonaws.http.response.AwsResponseHandlerAdapter.handle(AwsResponseHandlerAdapter.java:70) 9. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleResponse(AmazonHttpClient.java:1554) 10. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1272) 11. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056) 12. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743) 13. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717) 14. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) 15. at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) 16. at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) 17. at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) 18. at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4325) 19. at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4272) 20. at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4266) 21. at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:834) 22. at org.apache.hadoop.fs.s3a.S3AFileSystem.getFileStatus(S3AFileSystem.java:971) 23. at org.apache.hadoop.fs.s3a.S3AFileSystem.deleteUnnecessaryFakeDirectories(S3AFileSystem.java:1155) 24. at org.apache.hadoop.fs.s3a.S3AFileSystem.finishedWrite(S3AFileSystem.java:1144) 25. at org.apache.hadoop.fs.s3a.S3AOutputStream.close(S3AOutputStream.java:142) 26. at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOutputStream.java:74) 27. at org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java:108) 28. at org.apache.parquet.hadoop.ParquetFileWriter.end(ParquetFileWriter.java:467) 29. at org.apache.parquet.hadoop.InternalParquetRecordWriter.close(InternalParquetRecordWriter.java:117) 30. at org.apache.parquet.hadoop.ParquetRecordWriter.close(ParquetRecordWriter.java:112) 31. at org.apache.spark.sql.execution.datasources.parquet.ParquetOutputWriter.close(ParquetOutputWriter.scala:44) 32. at org.apache.spark.sql.execution.datasources.FileFormatWriter$SingleDirectoryWriteTask.releaseResources(FileFormatWriter.scala:252) 33. at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask$3.apply(FileFormatWriter.scala:191) 34. at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask$3.apply(FileFormatWriter.scala:188) 35. at org.apache.spark.util.Utils$.tryWithSafeFinallyAndFailureCallbacks(Utils.scala:1341) 36. at org.apache.spark.sql.execution.datasources.FileFormatWriter$.org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask(FileFormatWriter.scala:193) 37. at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1$$anonfun$3.apply(FileFormatWriter.scala:129) 38. at org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1$$anonfun$3.apply(FileFormatWriter.scala:128) 39. at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) 40. at org.apache.spark.scheduler.Task.run(Task.scala:99) 41. at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282) 42. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 43. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 44. at java.lang.Thread.run(Thread.java:748)
Erro: Amazon S3 service token expired (O token do serviço do Amazon S3 expirou)
Ao mover dados de e para o Amazon Redshift, as credenciais temporárias do Amazon S3, que expiram após uma hora, são usadas. Se você tiver um trabalho de longa execução, ele poderá falhar. Para obter informações sobre como configurar seus trabalhos de longa duração de execução para mover dados de e para o Amazon Redshift, consulte aws-glue-programming-etl-connect-redshift-home.
Erro: No private DNS for network interface found (Nenhum DNS privado foi encontrado na interface de rede)
Se um trabalho falhar ou um endpoint de desenvolvimento não for provisionado, é possível que tenha ocorrido um problema na configuração da rede.
-
Se você estiver usando o DNS fornecido pela Amazon, o valor de
enableDnsHostnames
deverá ser true. Para mais informações, consulte DNS.
Erro: Development endpoint provisioning failed (Falha no provisionamento do endpoint de desenvolvimento)
Se o AWS Glue não conseguir fornecer um endpoint de desenvolvimento com sucesso, é possível que tenha ocorrido um problema na configuração da rede.
-
Ao definir um endpoint de desenvolvimento, a VPC, a sub-rede e os security groups são validados para confirmar se atendem a determinados requisitos.
-
Se você forneceu a chave pública SSH opcional, verifique se ela está válida.
-
Verifique no console da VPC se a sua VPC está usando um DHCP option set válido. Para obter mais informações, consulte Conjuntos de opções de DHCP.
-
Se o cluster permanecer no estado PROVISIONING (Provisionamento), entre em contato com o AWS Support.
Erro: Notebook server CREATE_FAILED (Servidor de cadernos com status CREATE_FAILED)
Se o AWS Glue não conseguir criar o servidor de notebook para um endpoint de desenvolvimento, é possível que um dos seguintes problemas tenha ocorrido:
-
O AWS Glue transmite uma função do IAM para o Amazon EC2 durante a configuração do servidor de cadernos. A função do IAM precisa ter uma relação de confiança com o Amazon EC2.
-
A função do IAM precisa ter um perfil da instância com o mesmo nome. Quando você cria a função para o Amazon EC2 usando o console do IAM, o perfil da instância com o mesmo nome é automaticamente criado. Verifique se há um erro no log referente a um nome de perfil da instância
iamInstanceProfile.name
que seja inválido. Para obter mais informações, consulte Usar perfis de instância. -
Verifique se sua função tem permissão para acessar buckets do
aws-glue*
na política que você transmitiu para criar o servidor da notebook.
Erro: Local notebook fails to start (Falha ao iniciar o caderno local)
Se o seu notebook local não for iniciado houver indicação de erros referentes a diretórios ou pastas não encontrados, é possível que um dos seguintes problemas tenha ocorrido:
-
Se você estiver utilizando o Microsoft Windows, verifique se a variável de ambiente
JAVA_HOME
aponta para o diretório correto do Java. É possível atualizar o Java sem atualizar essa variável e, se ela apontar para uma pasta que não existe mais, os cadernos Jupyter não serão inicializados.
Erro: Running crawler failed (Falha na execução do crawler)
Se o AWS Glue apresentar falha ao executar um crawler para catalogar seus dados, é possível que um destes problemas tenha ocorrido. Verifique primeiro se o erro está presente na lista de crawlers do console do AWS Glue. Verifique se há um ícone de exclamação ao lado do nome do crawler e posicione o mouse sobre o ícone para ver as mensagens associadas.
-
Verifique os logs de execução do crawler no CloudWatch Logs, em
/aws-glue/crawlers
.
Erro: Partitions were not updated (As partições não foram atualizadas)
Caso as suas partições não tenham sido atualizadas no Data Catalog ao executar um trabalho de ETL, estas instruções de log da classe DataSink
no CloudWatch Logs podem ser úteis:
-
"
Attempting to fast-forward updates to the Catalog - nameSpace:
" – mostra qual banco de dados, tabela e catalogId este trabalho tentará modificar. Se essa instrução não estiver aqui, verifique seenableUpdateCatalog
está definido como verdadeiro e corretamente passado como um parâmetrogetSink()
ou emadditional_options
. -
"
Schema change policy behavior:
" – mostra qual valorupdateBehavior
do esquema foi passado. -
"
Schemas qualify (schema compare):
" – será verdadeiro ou falso. -
"
Schemas qualify (case-insensitive compare):
" – será verdadeiro ou falso. -
Se ambos forem false e o
updateBehavior
não estiver definido comoUPDATE_IN_DATABASE
, o esquema do DynamicFrame deverá ser idêntico ou conter um subconjunto das colunas visualizadas no esquema da tabela do Data Catalog.
Para obter mais informações sobre a atualização de partições, consulte Atualizar esquemas e adicionar novas partições ao Catálogo de Dados em trabalhos do AWS Glue ETL.
Erro: Job bookmark update failed due to version mismatch (A atualização do marcador de trabalho falhou devido à incompatibilidade da versão)
Você pode estar tentando parametrizar trabalhos do AWS Glue para aplicar a mesma transformação/lógica em conjuntos de dados diferentes no Amazon S3. Você deseja rastrear arquivos processados nos locais fornecidos. Quando você executa o mesmo trabalho no mesmo bucket de origem e grava simultaneamente no mesmo/em outro destino (simultaneidade >1), o trabalho falha com este erro:
py4j.protocol.Py4JJavaError: An error occurred while callingz:com.amazonaws.services.glue.util.Job.commit.:com.amazonaws.services.gluejobexecutor.model.VersionMismatchException: Continuation update failed due to version mismatch. Expected version 2 but found version 3
Solução: defina a simultaneidade como 1 ou não execute o trabalho simultaneamente.
Atualmente os marcadores do AWS Glue não são compatíveis com execuções de trabalhos simultâneas, e as confirmações falharão.
Erro: A job is reprocessing data when job bookmarks are enabled (Um trabalho está reprocessando dados quando marcadores do trabalho estão habilitados)
Pode haver situações em que você habilitou os marcadores de trabalho do AWS Glue, mas o trabalho de ETL está reprocessando dados que já foram processados em uma execução anterior. Verifique se essas causas comuns desse erro existem:
Simultaneidade máxima
Definir o número máximo de execuções simultâneas para o trabalho maior que o valor padrão de 1 pode interferir nos marcadores do trabalho. Isso pode ocorrer quando marcadores de trabalhos verificam a hora da última modificação de objetos para verificar quais objetos precisam ser reprocessados. Para obter mais informações, consulte a discussão sobre simultaneidade máxima em Configurar propriedades de trabalho para trabalhos do Spark no AWS Glue.
Objeto de trabalho ausente
Verifique se o script de execução do trabalho termina com a seguinte confirmação:
job.commit()
Quando você inclui esse objeto, o AWS Glue registra o time stamp e o caminho da execução do trabalho. Se você executar o trabalho novamente com o mesmo caminho, o AWS Glue processará apenas os arquivos novos. Se você não incluir esse objeto, e os marcadores do trabalho estiverem habilitados, o trabalho reprocessará os arquivos já processados junto com os arquivos novos e criará redundância no datastore de destino do trabalho.
Parâmetro de contexto da transformação ausente
O contexto de transformação é um parâmetro opcional na classe GlueContext
, mas os marcadores de trabalho não funcionarão se você não o incluir. Para resolver esse erro, adicione o parâmetro de contexto de transformação ao criar o DynamicFrame, conforme mostrado a seguir:
sample_dynF=create_dynamic_frame_from_catalog(database, table_name,transformation_ctx="sample_dynF")
Fonte de entrada
Se você estiver usando um banco de dados relacional (uma conexão JDBC) para a fonte de entrada, os marcadores de trabalho só funcionarão se as chaves primárias da tabela estiverem em ordem sequencial. Os marcadores de trabalhos funcionam para linhas novas, mas não para linhas atualizadas. Isso ocorre porque os marcadores de trabalho procuram as chaves primárias, que já existem. Isso não se aplica se a fonte de entrada for o Amazon Simple Storage Service (Amazon S3).
Hora da última modificação
Para fontes de entrada do Amazon S3, os marcadores de trabalho verificam a hora da última modificação dos objetos, em vez dos nomes de arquivo, para verificar quais objetos precisam ser reprocessados. Se os dados da fonte de entrada tiverem sido modificados desde a última execução do trabalho, os arquivos serão reprocessados quando você executar o trabalho novamente.
Erro: comportamento de failover entre VPCs no AWS Glue
O processo a seguir é usado para failover de trabalhos no AWS Glue versão 4.0 e nas versões anteriores.
Resumo: uma conexão do AWS Glue é selecionada no momento em que uma execução de trabalho é enviada. Se a execução do trabalho encontrar alguns problemas (falta de endereços IP, conectividade com a fonte, problema de roteamento), a execução do trabalho falhará. Se as novas tentativas estiverem configuradas, o AWS Glue tentará novamente com a mesma conexão.
-
Para cada tentativa de execução, o AWS Glue verificará a integridade das conexões, na ordem listada na configuração do trabalho, até encontrar uma que possa ser usada. No caso de uma falha na Zona de Disponibilidade (AZ), as conexões dessa AZ falharão na verificação e serão ignoradas.
-
O AWS Glue valida a conexão com o seguinte:
verifica se existem ID e sub-rede da Amazon VPC válidos.
verifica se existe um gateway NAT ou um endpoint da Amazon VPC.
verifica se a sub-rede tem mais de 0 endereços IP alocados.
verifica se a AZ está íntegra.
O AWS Glue não consegue verificar a conectividade no momento do envio da execução do trabalho.
-
Para trabalhos usando a Amazon VPC, todos os drivers e executores serão criados na mesma AZ com a conexão selecionada no momento do envio da execução do trabalho.
-
Se as novas tentativas estiverem configuradas, o AWS Glue tentará novamente com a mesma conexão. Isso ocorre porque não podemos garantir que os problemas com essa conexão sejam de longa duração. Se uma AZ falhar, as execuções de trabalhos existentes (dependendo do estágio da execução do trabalho) nessa AZ poderá falhar. Uma nova tentativa deve detectar uma falha de AZ e escolher outra AZ para a nova execução.