Nesta página, mostramos como resolver problemas com os pipelines em lote do Cloud Data Fusion.
Erro no pipeline: arquivo de texto ocupado
O seguinte erro ocorre quando você executa um pipeline em lote, fazendo com que ele falhe:
error=26, Text file busy
Para resolver esse problema, configure um gatilho que tente novamente um pipeline automaticamente quando ele falhar.
- Pare o pipeline.
- Criar um gatilho. Nesse caso, quando você selecionar um evento para executar, escolha Falha. Para mais informações, consulte Criar um gatilho de entrada em um pipeline downstream.
- Inicie o pipeline.
O pipeline simultâneo está parado
No Cloud Data Fusion, executar muitos pipelines em lote simultâneos pode sobrecarregar a instância, fazendo com que os jobs fiquem travados nos estados Starting, Provisioning ou Running. Como resultado, não é possível interromper os pipelines pela interface da Web ou por chamadas de API. Quando você executa muitos pipelines simultaneamente, a interface da Web pode ficar lenta ou sem resposta. Esse problema ocorre devido a várias solicitações UI feitas ao manipulador HTTP no back-end.
Para resolver esse problema, controle o número de novas solicitações usando o controle de fluxo do Cloud Data Fusion.
Tempo limite da conexão SSH atingido durante a execução de um pipeline
O seguinte erro ocorre ao executar um pipeline em lote:
java.io.IOException: com.jcraft.jsch.JSchException:
java.net.ConnectException: Connection timed out (Connection timed out)
Para resolver esse problema, faça o seguinte:
- Verifique se há uma regra de firewall ausente (normalmente a porta 22). Para criar uma nova regra de firewall, consulte Configuração de rede do cluster do serviço gerenciado para Apache Spark.
- Verifique se o fiscalizador do Compute Engine permite a conexão entre a instância do Cloud Data Fusion e o cluster do Managed Service for Apache Spark.
Código de resposta: 401. Erro: erro desconhecido
O seguinte erro ocorre ao executar um pipeline em lote:
java.io.IOException: Failed to send message for program run program_run:
Response code: 401. Error: unknown error
Para resolver esse problema, conceda o papel de executor do Cloud Data Fusion (roles/datafusion.runner) à conta de serviço usada pelo serviço gerenciado para Apache Spark.
Falha no pipeline com o plug-in do BigQuery com erro Access Denied
Há um problema conhecido em que um pipeline falha com um erro Access Denied ao
executar jobs do BigQuery. Isso afeta os pipelines que usam os
seguintes plug-ins:
- Origens do BigQuery
- Coletores do BigQuery
- Coletores de várias tabelas do BigQuery
- Transformador pushdown
Exemplo de erros nos registros (pode variar conforme o plug-in que você está usando):
POST https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/jobs
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Access Denied: Project xxxx: User does not have bigquery.jobs.create permission in project PROJECT_ID",
"reason" : "accessDenied"
} ],
"message" : "Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.",
"status" : "PERMISSION_DENIED"
}
Neste exemplo, PROJECT_ID é o ID do projeto que você especificou no plug-in. A conta de serviço do projeto especificado no plug-in não tem permissão para realizar pelo menos uma das seguintes ações:
- Executar um job do BigQuery
- Ler um conjunto de dados do BigQuery
- Criar um bucket temporário
- Crie um conjunto de dados do BigQuery
- Criar a tabela do BigQuery
Para resolver esse problema, conceda os papéis ausentes ao projeto (PROJECT_ID) que você especificou no plug-in:
Para executar um job do BigQuery, conceda o papel de usuário do job do BigQuery (
roles/bigquery.jobUser).Para ler um conjunto de dados do BigQuery, conceda o papel de leitor de dados do BigQuery (
roles/bigquery.dataViewer).Para criar um bucket temporário, conceda o papel de administrador de armazenamento (
roles/storage.admin).Para criar um conjunto de dados ou uma tabela do BigQuery, conceda o papel de editor de dados do BigQuery (
roles/bigquery.dataEditor).
Para mais informações, consulte a documentação de solução de problemas do plug-in (Solução de problemas de coletores de várias tabelas do Google BigQuery).
O pipeline não para no limite de erros
Um pipeline pode não parar após vários erros, mesmo que você defina o limite de erros como 1.
O limite de erros é destinado a exceções geradas pela diretiva em caso de falha que não seja processada de outra forma. Se a diretiva já usar a API emitError, o limite de erro não será ativado.
Para projetar um pipeline que falhe quando um determinado limite for atingido, use a diretiva FAIL.
Sempre que a condição transmitida à diretiva FAIL é atendida, ela é contabilizada em relação ao limite de erros, e o pipeline falha quando o limite é atingido.
Excluir um cluster efêmero do Managed Service for Apache Spark
Quando o Cloud Data Fusion cria um cluster temporário do serviço gerenciado para Apache Spark durante o provisionamento da execução do pipeline, o cluster é excluído após a conclusão da execução do pipeline. Em casos raros, a exclusão do cluster falha.
Altamente recomendado: faça upgrade para a versão mais recente do Cloud Data Fusion para garantir a manutenção adequada do cluster.
Definir tempo máximo de inatividade
Para resolver esse problema, configure a opção Max Idle Time. Isso permite que o serviço gerenciado para Apache Spark exclua clusters automaticamente, mesmo que
uma chamada explícita na conclusão do pipeline falhe.
O Max Idle Time está disponível nas versões 6.4 e mais recentes do Cloud Data Fusion.
Recomendado: para versões anteriores à 6.6, defina Max Idle Time manualmente para 30 minutos ou mais.
Excluir clusters manualmente
Se não for possível fazer upgrade da versão ou configurar a opção Max Idle Time,
exclua os clusters desatualizados manualmente:
Acesse o ID de cada projeto em que os clusters foram criados:
Nos argumentos de execução do pipeline, verifique se o ID do projeto do Managed Service for Apache Spark está personalizado para a execução.

Se um ID do projeto do Managed Service para Apache Spark não for especificado explicitamente, determine qual provisionador é usado e verifique se há um ID do projeto:
Nos argumentos de ambiente de execução do pipeline, verifique o valor de
system.profile.name.
Abra as configurações do provisionador e verifique se o ID do projeto do Managed Service for Apache Spark está definido. Se a configuração não estiver presente ou o campo estiver vazio, o projeto em que a instância do Cloud Data Fusion está sendo executada será usado.
Para cada projeto:
Abra o projeto no console Google Cloud e acesse a página Clusters do Managed Service para Apache Spark.
Ordene os clusters pela data de criação, do mais antigo para o mais recente.
Se o painel de informações estiver oculto, clique em Mostrar painel de informações e acesse a guia Rótulos.
Para cada cluster que não está em uso (por exemplo, mais de um dia se passou), verifique se ele tem um rótulo de versão do Cloud Data Fusion. Isso indica que ele foi criado pelo Cloud Data Fusion.
Marque a caixa de seleção ao lado do nome do cluster e clique em Excluir.
Os pipelines falham quando executados em clusters do Managed Service for Apache Spark com workers principais ou secundários
Nas versões 6.8 e 6.9 do Cloud Data Fusion, ocorre um problema que faz com que os pipelines falhem se forem executados em clusters do Managed Service para Apache Spark:
ERROR [provisioning-task-2:i.c.c.i.p.t.ProvisioningTask@161] - PROVISION task failed in REQUESTING_CREATE state for program run program_run:default.APP_NAME.UUID.workflow.DataPipelineWorkflow.RUN_ID due to
Caused by: io.grpc.StatusRuntimeException: CANCELLED: Failed to read message.
Caused by: com.google.protobuf.GeneratedMessageV3$Builder.parseUnknownField(Lcom/google/protobuf/CodedInputStream;Lcom/google/protobuf/ExtensionRegistryLite;I)Z.
Para resolver esse problema, faça upgrade para a revisão de patch 6.8.3.1, 6.9.2.1 ou mais recente.
O plug-in do Cloud Storage falha intermitentemente com uma expressão regular no Managed Service for Apache Spark 2.0
Os pipelines podem falhar intermitentemente na versão 6.10.1 do Cloud Data Fusion quando o plug-in do Cloud Storage usa um padrão de expressão regular * no caminho e o ambiente de execução é o serviço gerenciado para Apache Spark 2.0.
Para resolver esse problema, faça uma das seguintes ações:
- Atualize a imagem do Managed Service for Apache Spark para a versão 2.1 ou mais recente.
- Reverta para uma versão anterior do plug-in do Cloud Storage.
- Aumente a memória alocada para o executor do Managed Service for Apache Spark.
Os pipelines falham com NoSuchMethodError no Managed Service for Apache Spark 2.2
No Cloud Data Fusion versão 6.10.1.1 e mais recentes, os pipelines podem falhar com o seguinte erro ao serem executados no Managed Service para Apache Spark 2.2:
java.lang.NoSuchMethodError: 'org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
org.apache.spark.sql.catalyst.encoders.RowEncoder.apply(org.apache.spark.sql.types.StructType)'
Para resolver esse problema, faça uma das seguintes ações:
- Reconfigure a imagem do Managed Service for Apache Spark para a versão 2.1. Para mais informações, consulte Mudar a versão da imagem do serviço gerenciado para Apache Spark no Cloud Data Fusion.
- Faça upgrade da instância do Cloud Data Fusion para a versão 6.11.
O plug-in de várias tabelas de banco de dados falha se o nome de referência contiver espaços
No Cloud Data Fusion versão 6.10.1 e mais recentes, os pipelines que usam a origem em lote de várias tabelas de banco de dados podem falhar quando o campo Nome de referência contém caracteres de espaço.
Para resolver esse problema, atualize o plug-in "Várias tabelas de banco de dados" para a versão 1.4.1 ou mais recente no Hub. A versão atualizada não permite espaços no campo Nome de referência.