Solução de problemas

Nesta página, você verá como resolver problemas com o Cloud Data Fusion.

O pipeline está parado

Nas versões do Cloud Data Fusion anteriores à 6.2, há um problema conhecido em que os pipelines ficam presos nos estados Starting ou Running. Interromper o pipeline resulta no seguinte erro: Malformed reply from SOCKS server. Esse erro se deve à falta de recursos de memória adequados no nó mestre do Dataproc.

Recomendações

Para evitar que o pipeline fique preso na próxima execução, exclua o cluster do Dataproc. Em seguida, atualize a memória mestre no perfil do Compute Engine:

  • Obrigatório: aumente o tamanho do cluster do Dataproc para pelo menos duas CPUS e os nós mestres para pelo menos 8 GB.
  • Opcional: migre para o Cloud Data Fusion 6.2. A partir da versão 6.2, as execuções de pipeline são enviadas por meio da API Dataproc Job e não impõem muita utilização da memória no nó mestre. Porém, ainda é recomendado usar duas CPUs e nós mestres de 8 GB para jobs de produção.

Como alterar o tamanho do cluster

API REST

Para alterar o tamanho do cluster, exporte o perfil do Compute Engine e use a API REST para atualizar as configurações de memória:

  1. Exporte o perfil do Compute. Ele é salvo localmente em um arquivo JSON.
  2. Edite as seguintes configurações de memória no arquivo JSON: atualize masterCPUs para pelo menos 2 e masterMemoryMB para pelo menos 8192 MB (aproximadamente 8 GB).

    {
     "name": "masterCPUs",
     "value": "2",
     "isEditable": true
    },
    {
     "name": "masterMemoryMB",
     "value": "8192",
     "isEditable": true
    },
    
  3. Use a API REST para atualizar o perfil do Compute. É possível usar cURL ou o HTTP Executor na IU.

    Para cURL, use o seguinte comando:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://<data-fusion-instance-url>/api/v3/profiles/<profile-name> -X PUT -d @<path-to-json-file>

Como recuperar o pipeline

Para recuperar o pipeline travado, reinicie a instância. É possível reiniciar a instância usando a API REST ou a CLI do Google Cloud.

API REST

Para reiniciar a instância, use o método restart().

gcloud

Para reiniciar a instância, execute o seguinte comando:

gcloud beta data-fusion instances restart

Pipelines simultâneos estão parados

O seguinte problema pode ocorrer quando você executa muitos pipelines simultâneos: os jobs de pipeline ficam travados nos estados Starting, Provisioning ou Running. A IU do Cloud Data Fusion fica lenta ou não responde. Quando isso acontece, talvez não seja possível interromper os pipelines na IU ou com chamadas de API.

Recomendação

  1. Reinicie a instância.

    API REST

    Para reiniciar a instância, use o método restart().

    gcloud

    Para reiniciar a instância, execute o seguinte comando:

    gcloud beta data-fusion instances restart

  2. Distribuir execuções simultâneas do pipeline. Se isso não for possível ou se o problema persistir, consulte Como receber suporte.

O plug-in do combinador não mostra as condições de participação

O seguinte problema ocorre na versão 6.4.0 do Cloud Data Fusion, quando você usa o plug-in Joiner. Ele permite alternar entre condições básicas e avançadas. Depois de fazer upgrade ou importar um pipeline de uma versão anterior e abrir a página de propriedades do Joiner, a condição de junção básica do pipeline configurado não é exibida. Esse problema não afeta a maneira como o pipeline é executado. A condição ainda existe.

Recomendação

Para resolver o problema:

  1. Clique em Administrador do sistema > Configuração > Fazer chamadas HTTP.
  2. Nos campos do executor de chamadas HTTP, insira:

    PUT namespaces/system/artifacts/core-plugins/versions/CORE_PLUGIN_VERSION/properties/widgets.Joiner-batchjoiner?scope=SYSTEM

    Para o CORE_PLUGIN_VERSION, use a versão mais recente do plug-in de núcleo.

  3. Cole o seguinte conteúdo JSON no campo Corpo:

    0967c-fdb73
    2ee80-67055
    b41f9-1dcd9
    425a5-cf822
    7e1a0-485e6
    eda47-040ea
    27430-fabba
    803ec-2c6e7
    8f7e0-2738d
    e22b5-4c375
    b3abb-778e4
    2deda-2d6be
    47855-b451d
    3e356-1268e
    f0ff9-876b6
    623df-8703a
    

  4. Clique em Send.

Se a página "Pipeline" estiver aberta em outra janela, talvez seja necessário atualizar a página para ver as condições de junção.

A replicação do SQL Server não replica todas as colunas das tabelas alteradas

O problema a seguir ocorre em jobs de replicação que replicam dados de uma tabela no SQL Server. Se a tabela de origem de replicação tiver uma coluna recém-adicionada, ela não será adicionada automaticamente à tabela do CDC. Você precisa adicioná-lo manualmente à tabela de CDC subjacente.

Recomendação

Para resolver o problema:

  1. Desative a instância do CDC:

    EXEC sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @capture_instance = 'dbo_myTable'
    GO
    
  2. Ative a instância do CDC novamente:

    EXEC sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @role_name = NULL,
    @capture_instance = 'dbo_myTable'
    GO
    
  3. Crie um novo job de replicação.

Para mais informações, consulte Como processar alterações em tabelas de origem.

Replicação e bancos de dados sempre ativados do SQL Server

Uma fonte do Microsoft SQL Server pode capturar alterações de uma réplica somente leitura Sempre ativada. Nesta configuração, o argumento do ambiente de execução source.connector.database.applicationIntent=ReadOnly precisa ser transmitido para o job de replicação. Sem esse argumento de ambiente de execução, o job falhará com o seguinte erro:

Producer failure java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException: Failed to update database "DATABASE_NAME" because the database is read-only.

Recomendação

Para resolver o erro, defina source.connector.database.applicationIntent=ReadOnly como um argumento do ambiente de execução. Isso define internamente o snapshot.isolation.mode como snapshot.

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

Recomendação

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 falha ou fornece resultados incorretos com a versão 0.17.0 do coletor do BigQuery.

Há um problema conhecido em que os pipelines de dados que incluem a versão 0.17.0 do plug-in do coletor do BigQuery falham ou fornecem resultados incorretos. Esse problema foi resolvido na versão 0.17.1.

Recomendação

Para resolver esse problema, atualize as versões do plug-in do Google Cloud:

  1. Receba a versão 0.17.1 ou mais recente do Google Cloud.
    1. Na IU da Web do Cloud Data Fusion, clique em HUB.
    2. Selecione o Google Cloud versão 0.17.1 ou posterior e clique em Implantar.
  2. Altere todos os plug-ins do Google Cloud que o pipeline usa para a mesma versão com uma das seguintes opções:
    • Para atualizar todas as versões do plug-in de uma só vez, exporte seu pipeline atual e depois importe-o novamente. Ao importá-la, selecione a opção para substituir todos os plug-ins pela versão mais recente.
    • Para atualizar os plug-ins manualmente:
      1. Abra a página do Pipeline Studio.
      2. No menu Coletor, mantenha o ponteiro do mouse sobre o BigQuery e clique em Alterar.
      3. Selecione a versão 0.17.1 ou posterior.
      4. Repita para qualquer outro plug-in do Google Cloud que você usar, como o plug-in do BigQuery.

O plug-in de origem do SQL Server é compatível com o tipo de dados DateTime

Nas versões anteriores da origem do SQL Server (versão 1.5.3 ou anterior):

  • Os tipos de dados datetime e datetime2 do SQL Server são mapeados para o tipo de dados timestamp do CDAP.
  • O tipo de dados datetimeoffset é mapeado para o tipo de dados CDAP string.

A versão 1.5.4 do plug-in é incompatível com versões anteriores, mas os pipelines que funcionam com a versão 1.5.3 podem não funcionar após o upgrade para a versão 1.5.4, caso um estágio downstream no pipeline dependa do esquema de saída da origem (porque o esquema de saída será alterado). A versão 1.5.4 gera uma NullPointerException quando datetime, datetime2 e datetimeoffset têm valores nulos.

As versões 1.5.5 e posteriores são mais compatíveis com o datetime. Na maioria dos casos, os pipelines que funcionam na versão 1.5.3 ainda funcionarão após o upgrade para a versão 1.5.5. As configurações de esquema de saída existentes no plug-in de origem são respeitadas. Por exemplo, se você já tiver o esquema de saída definido para mapear os tipos de dados datetime e datetime2 para os tipos de dados timestamp e datetimeoffset, string, eles ainda serão honrados.

O caso especial é quando você usa uma macro para o nome do banco de dados, o nome do esquema ou o nome da tabela, e se você não tiver especificado manualmente um esquema de saída. Assim, o esquema é detectado e mapeado no tempo de execução. A versão antiga (1.5.3) mapeia os tipos de dados datetime e datetime2 para timestamp e o tipo datetimeoffset para o tipo de dados string no momento da execução. Além disso, a versão 1.5.5 ou mais recente mapeará para datetime no momento da execução.

Recomendação

Para resolver esse problema, faça upgrade do pipeline para usar a versão 1.5.5 ou posterior do plug-in.

Após o upgrade, os tipos de dados datetime, datetime2 e datetimeoffset do SQL Server são mapeados para o tipo de dados de data e hora do CDAP no ambiente de execução. Se você tiver um estágio ou coletor downstream que consuma o carimbo de data/hora original (para o qual datetime e datetime2 foram mapeados) ou a string (em que datetimeoffset foi mapeado), atualize-os ou espere que eles consumam dados de datetime. Para mais informações, consulte Origem do Batch do SQL Server CDAP.