Risolvere i problemi

Questa pagina mostra come risolvere i problemi relativi a Cloud Data Fusion.

La pipeline è bloccata

Nelle versioni di Cloud Data Fusion precedenti la 6.2, esiste un problema noto per cui le pipeline sono bloccate negli stati Starting o Running. L'arresto della pipeline causa il seguente errore: Malformed reply from SOCKS server. Questo errore è dovuto alla mancanza di risorse di memoria adeguate sul nodo master di Dataproc.

Consigli

Per evitare che la pipeline si blocchi alla successiva esecuzione, elimina il cluster Dataproc. Quindi, aggiorna la memoria master nel profilo Compute Engine:

  • Obbligatorio: aumenta le dimensioni del cluster Dataproc ad almeno 2 CPU e i nodi master ad almeno 8 GB.
  • (Facoltativo) Esegui la migrazione a Cloud Data Fusion 6.2. A partire dalla versione 6.2, le esecuzioni di pipeline vengono inviate tramite l'API Dataproc Job e non richiedono un forte utilizzo della memoria sul nodo master. Tuttavia, è comunque consigliabile utilizzare 2 nodi master di CPU e 8 GB per i job di produzione.

Modifica delle dimensioni del cluster

API REST

Per modificare le dimensioni del cluster, esporta il profilo Compute Engine e utilizza l'API REST per aggiornare le impostazioni di memoria:

  1. Esporta il profilo Compute. Viene salvato localmente in un file JSON.
  2. Modifica le seguenti impostazioni di memoria nel file JSON: aggiorna masterCPUs ad almeno 2 e masterMemoryMB ad almeno 8192 MB (circa 8 GB).

    {
     "name": "masterCPUs",
     "value": "2",
     "isEditable": true
    },
    {
     "name": "masterMemoryMB",
     "value": "8192",
     "isEditable": true
    },
    
  3. Utilizzare l'API REST per aggiornare il profilo Compute. Puoi utilizzare cURL o HTTP Executor nell'interfaccia utente.

    Per cURL, utilizza il seguente 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>

Ripristino della pipeline

Per ripristinare la pipeline bloccata, riavvia l'istanza. Puoi riavviare l'istanza utilizzando l'API REST o l'interfaccia a riga di comando di Google Cloud.

API REST

Per riavviare l'istanza, utilizza il metodo restart().

gcloud

Per riavviare l'istanza, esegui questo comando:

gcloud beta data-fusion instances restart

Le pipeline simultanee sono bloccate

Il seguente problema potrebbe verificarsi quando esegui molte pipeline simultanee: i job di pipeline vengono bloccati negli stati Starting, Provisioning o Running. L'interfaccia utente di Cloud Data Fusion diventa lenta o non risponde. In questo caso, potresti non essere in grado di arrestare le pipeline nella UI o con le chiamate API.

Suggerimento

  1. Riavvia l'istanza.

    API REST

    Per riavviare l'istanza, utilizza il metodo restart().

    gcloud

    Per riavviare l'istanza, esegui questo comando:

    gcloud beta data-fusion instances restart

  2. Scalare le esecuzioni simultanee delle pipeline. Se non è possibile o se il problema persiste, consulta la sezione Richiedere assistenza.

Il plug-in per joiner non mostra condizioni di unione

Il seguente problema si verifica nella versione 6.4.0 di Cloud Data Fusion, quando utilizzi il plug-in Joiner, che ti consente di passare dalle condizioni di base a quelle avanzate e viceversa. Dopo aver eseguito l'upgrade o l'importazione di una pipeline da una versione precedente e aver aperto la pagina delle proprietà Joiner, la condizione di base di unione per la pipeline configurata non viene visualizzata. Questo problema non influisce sul funzionamento della pipeline, la condizione esiste ancora.

Suggerimento

Per risolvere il problema:

  1. Fai clic su System Admin > Configurazione > effettua chiamate HTTP.
  2. Nei campi dell'esecutore delle chiamate HTTP, inserisci:

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

    Per CORE_PLUGIN_VERSION, utilizza la versione più recente del plug-in.

  3. Incolla i contenuti JSON seguenti nel 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. Fai clic su Invia.

Se la pagina Pipeline è aperta in un'altra finestra, potresti dover aggiornare la pagina per visualizzare le condizioni di unione.

La replica per SQL Server non replica tutte le colonne per le tabelle modificate

Il seguente problema si verifica nei job di replica che replicano i dati da una tabella in SQL Server. Se la tua tabella dell'origine di replica contiene una colonna aggiunta di recente, non viene aggiunta automaticamente alla tabella CDC. Devi aggiungerlo manualmente alla tabella CDC sottostante.

Suggerimento

Per risolvere il problema:

  1. Disabilita l'istanza CDC:

    EXEC sp_cdc_disable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @capture_instance = 'dbo_myTable'
    GO
    
  2. Abilita di nuovo l'istanza CDC:

    EXEC sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name = N'myTable',
    @role_name = NULL,
    @capture_instance = 'dbo_myTable'
    GO
    
  3. Crea un nuovo job di replica.

Per saperne di più, vedi Gestire le modifiche alle tabelle di origine.

Replica e database sempre attivi per SQL Server

Un'origine di Microsoft SQL Server può acquisire le modifiche da una replica sempre attiva di sola lettura. Per questa configurazione, l'argomento di runtime source.connector.database.applicationIntent=ReadOnly deve essere passato al job di replica. Senza questo argomento di runtime, il job non riesce e restituisce il seguente errore:

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

Suggerimento

Per risolvere l'errore, imposta source.connector.database.applicationIntent=ReadOnly come argomento di runtime. Imposta snapshot.isolation.mode su snapshot internamente.

La pipeline con il plug-in di BigQuery non riesce a causa di un errore Access Denied

Si è verificato un problema noto per cui una pipeline presenta un errore Access Denied durante l'esecuzione dei job BigQuery. Questo influisce sulle pipeline che utilizzano i seguenti plug-in:

  • Origini BigQuery
  • Sink BigQuery
  • Sink BigQuery multi-tabella
  • Pushdown trasformazione

Esempio di errore nei log (potrebbe variare a seconda del plug-in in uso):

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"
}

In questo esempio, PROJECT_ID è l'ID progetto specificato nel plug-in. L'account di servizio per il progetto specificato nel plug-in non dispone dell'autorizzazione per eseguire almeno una delle seguenti operazioni:

  • Esegui un job BigQuery
  • Leggere un set di dati BigQuery
  • Crea un bucket temporaneo
  • Crea un set di dati BigQuery
  • Creare la tabella BigQuery

Suggerimento

Per risolvere questo problema, concedi i ruoli mancanti al progetto (PROJECT_ID) che hai specificato nel plug-in:

Per ulteriori informazioni, consulta la documentazione per la risoluzione dei problemi del plug-in (Risoluzione dei problemi relativi al sink di tabella multipiano di Google).

La pipeline non funziona o fornisce risultati errati con la versione 0.17.0 del sink di BigQuery

Esiste un problema noto per cui le pipeline di dati che includono il plug-in del sink di BigQuery 0.17.0 non riescono o restituiscono risultati errati. Il problema è stato risolto nella versione 0.17.1.

Suggerimento

Per risolvere il problema, aggiorna le versioni del plug-in di Google Cloud:

  1. Ottieni la versione 1.17.1 o successive di Google Cloud.
    1. Nell'interfaccia utente web di Cloud Data Fusion, fai clic su HUB.
    2. Seleziona Google Cloud versione 0.17.1 o successiva e fai clic su Esegui il deployment.
  2. Modifica nella stessa versione tutti i plug-in Google Cloud utilizzati dalla pipeline con una delle seguenti opzioni:
    • Per aggiornare tutte le versioni dei plug-in contemporaneamente, esporta la pipeline esistente e poi importala di nuovo. Quando lo importi, seleziona l'opzione per sostituire tutti i plug-in con l'ultima versione.
    • Per aggiornare i plug-in manualmente:
      1. Apri la pagina Pipeline Studio.
      2. Nel menu Sink, tieni il puntatore del mouse su BigQuery, quindi fai clic su Cambia.
      3. Seleziona la versione 0.17.1 o successiva.
      4. Ripeti la procedura per tutti gli altri plug-in Google Cloud che utilizzi, come il plug-in di origine BigQuery.

Il plug-in di origine SQL Server supporta il tipo di dati Datetime

Nelle versioni precedenti dell'origine SQL Server (versione 1.5.3 o precedente):

  • I tipi di dati SQL Server datetime e datetime2 sono mappati al tipo di dati CDAP timestamp.
  • Il tipo di dati datetimeoffset è mappato a un tipo di dati string CDAP.

La versione 1.5.4 del plug-in non è compatibile con le versioni precedenti, ma le pipeline che lavorano con la versione 1.5.3 potrebbero non funzionare dopo l'upgrade alla versione 1.5.4 se una fase downstream nella pipeline si basa sullo schema di output dell'origine (perché lo schema di output ora cambia). La versione 1.5.4 genera un NullPointerException quando datetime, datetime2 e datetimeoffset hanno valori null.

Le versioni 1.5.5 e successive sono più compatibili con datetime. Nella maggior parte dei casi, le pipeline funzionanti in 1.5.3 continueranno a funzionare dopo l'upgrade alla versione 1.5.5. Vengono rispettate le impostazioni schemi di output esistenti nel plug-in di origine. Ad esempio, se lo schema di output è già impostato per mappare i tipi di dati datetime e datetime2 al tipo di dati timestamp e il tipo di dati datetimeoffset al tipo di dati string, verranno comunque rispettati.

Il caso speciale si verifica quando utilizzi una macro per il nome database, il nome schema o il nome tabella e se non hai specificato manualmente uno schema di output. In questo modo, lo schema viene rilevato e mappato in fase di esecuzione. La versione precedente (1.5.3) mappa datetime e datetime2 a tipo di dati timestamp e il tipo di dati datetimeoffset a tipo string con runtime, mentre 1.5.5 e successivi li mappano a datetime in fase di runtime.

Suggerimento

Per risolvere questo problema, esegui l'upgrade della pipeline per utilizzare il plug-in versione 1.5.5 o successiva.

Dopo l'upgrade, i tipi di dati SQL Server datetime, datetime2 e datetimeoffset vengono mappati al tipo di dati Timestamp CDAP in fase di runtime. Se hai una fase o un sink a valle che consuma il timestamp originale (a cui datetime e datetime2 sono stati mappati) o una stringa (a cui datetimeoffset è stato mappato), aggiornali o prevedi che consumino dati di datetime. Per ulteriori informazioni, consulta la pagina Origine batch di SQL Server CDAP.