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:
- Exporte o perfil do Compute. Ele é salvo localmente em um arquivo JSON.
Edite as seguintes configurações de memória no arquivo JSON: atualize
masterCPUs
para pelo menos2
emasterMemoryMB
para pelo menos8192
MB (aproximadamente 8 GB).{ "name": "masterCPUs", "value": "2", "isEditable": true }, { "name": "masterMemoryMB", "value": "8192", "isEditable": true },
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:
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
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:
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:
- Clique em Administrador do sistema > Configuração > Fazer chamadas HTTP.
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.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
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:
Desative a instância do CDC:
EXEC sp_cdc_disable_table @source_schema = N'dbo', @source_name = N'myTable', @capture_instance = 'dbo_myTable' GO
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
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:
- Receba a versão 0.17.1 ou mais recente do Google Cloud.
- Na IU da Web do Cloud Data Fusion, clique em HUB.
- Selecione o Google Cloud versão 0.17.1 ou posterior e clique em Implantar.
- 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:
- Abra a página do Pipeline Studio.
- No menu Coletor, mantenha o ponteiro do mouse sobre o BigQuery e clique em Alterar.
- Selecione a versão 0.17.1 ou posterior.
- 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
edatetime2
do SQL Server são mapeados para o tipo de dadostimestamp
do CDAP. - O tipo de dados
datetimeoffset
é mapeado para o tipo de dados CDAPstring
.
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.