Questa pagina mostra come risolvere i problemi di Cloud Data Fusion.
Risoluzione dei problemi di pipeline in modalità batch
Questo consiglio è per le pipeline in modalità batch.
Errore della pipeline: file di testo occupato
Quando esegui una pipeline batch, si verifica il seguente errore con un conseguente errore:
error=26, Text file busy
Consiglio
Per risolvere il problema, configura un trigger che ripeta automaticamente una pipeline quando non funziona.
- Arresta la pipeline.
- Crea un trigger. In questo caso, quando selezioni un evento da eseguire, scegli Non riuscito. Per ulteriori informazioni, consulta Creare un trigger in entrata su una downstream pipeline di controllo.
- Avvia la pipeline.
La pipeline contemporanea è bloccata
In Cloud Data Fusion, l'esecuzione di molte pipeline batch concorrenti può mettere a dura prova l'istanza, causando il blocco dei job negli stati Starting
, Provisioning
o Running
. Di conseguenza, le pipeline non possono essere interrotte tramite l'interfaccia web o le chiamate API. Quando esegui molte pipeline contemporaneamente, l'interfaccia web può diventare lenta o non rispondere. Questo problema si verifica a causa di più richieste UI effettuate all'handler HTTP nel backend.
Consiglio
Per risolvere il problema, controlla il numero di nuove richieste utilizzando il controllo del flusso di Cloud Data Fusion, disponibile nelle istanze in esecuzione nella versione 6.6 e successive.
Timeout della connessione SSH durante l'esecuzione di una pipeline
Quando esegui una pipeline batch, si verifica il seguente errore:
`java.io.IOException: com.jcraft.jsch.JSchException:
java.net.ConnectException: Connection timed out (Connection timed out)`
Consiglio
Per risolvere l'errore, verifica che non si siano verificati i seguenti problemi:
- Verifica la presenza di una regola firewall mancante (in genere la porta 22). Per creare una nuova regola firewall, consulta Configurazione di rete dei cluster Dataproc
- Verifica che l'applicazione forzata di Compute Engine consenta la connessione tra la tua istanza Cloud Data Fusion e il cluster Dataproc.
Codice di risposta: 401. Errore: errore sconosciuto
Quando esegui una pipeline batch, si verifica il seguente errore:
`java.io.IOException: Failed to send message for program run program_run:
Response code: 401. Error: unknown error`
Consiglio
Per risolvere questo errore, devi concedere il ruolo Runner Cloud Data Fusion (roles/datafusion.runner
) all'account di servizio utilizzato da Dataproc.
La pipeline con il plug-in BigQuery non funziona e viene restituito l'errore Access Denied
Si è verificato un problema noto per cui una pipeline ha esito negativo e genera un errore Access Denied
quando
dei job BigQuery in esecuzione. Questo influisce sulle pipeline che utilizzano
seguenti plug-in:
- Origini BigQuery
- Sink BigQuery
- Sink multitabella BigQuery
- Trasferimento delle trasformazioni
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 che hai 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
- crea la tabella BigQuery
Consiglio
Per risolvere il problema, concedi i ruoli mancanti al progetto (PROJECT_ID) che hai specificato nel plug-in:
Per eseguire un job BigQuery, concedi al job BigQuery Ruolo utente (
roles/bigquery.jobUser
).Per leggere un set di dati BigQuery, concedi il ruolo Visualizzatore dati BigQuery (
roles/bigquery.dataViewer
).Per creare un bucket temporaneo, concedi il ruolo Amministratore archiviazione (
roles/storage.admin
).Per creare un set di dati o una tabella BigQuery, concedi il ruolo Editor dati BigQuery (
roles/bigquery.dataEditor
).
Per ulteriori informazioni, consulta la documentazione di risoluzione dei problemi del plug-in (Risoluzione dei problemi relativi al sink multi-tabella di Google BigQuery).
La pipeline non si arresta alla soglia di errore
Una pipeline potrebbe non arrestarsi dopo più errori, anche se imposti l'errore
soglia a 1
.
La soglia di errore è destinata a eventuali eccezioni sollevate dalla direttiva nel caso di un errore non gestito in altro modo. Se la direttiva utilizza già l'API emitError, la soglia di errore non è attivata.
Consiglio
Per progettare una pipeline che non funziona quando viene raggiunta una determinata soglia, utilizza
FAIL
.
Ogni volta che la condizione passata alla direttiva FAIL
è soddisfatta, viene conteggiata
nei confronti della soglia di errore e la pipeline non va a buon fine dopo che la soglia è stata
superata.
Il plug-in dell'origine batch Oracle converte NUMBER
in string
Nelle versioni dell'origine batch Oracle 1.9.0, 1.8.3 e precedenti, il tipo di dati NUMBER
Oracle, con precisione e scala non definite, è mappato al tipo di dati CDAP
decimal(38,0)
.
Le versioni del plug-in 1.9.1, 1.8.4 e 1.8.5 sono incompatibili con le versioni precedenti e le pipeline
che utilizzano versioni precedenti potrebbero non funzionare dopo l'upgrade alle versioni 1.9.1,
1.8.5 e 1.8.4, se una fase a valle nella pipeline si basa sull'output
schema dell'origine perché lo schema di output è cambiato. Quando c'è
schema di output definito per il tipo di dati Oracle NUMBER
definito senza
precisione e fare lo scale in versione precedente del plug-in, dopo l'upgrade alle versioni
1.9.1, 1.8.5 o 1.8.4, il plug-in dell'origine batch Oracle genera quanto segue
errore di mancata corrispondenza dello schema per i tipi: Schema field '<field name>' is expected to
have type 'decimal with precision <precision> and scale <scale> but found
'string'. Change the data type of field <field name> to string.
Le versioni 1.9.1, 1.8.5 e 1.8.4 funzioneranno con uno schema di output del tipo di dati CDAPstring
per il tipo di dati NUMBER
di Oracle definito senza precisione e scala. Se è presente un tipo di dati Oracle NUMBER
definito senza precisione e
presente nello schema di output di origine Oracle, utilizzando la versione precedente
Il plug-in Oracle non è consigliato perché può causare errori di arrotondamento.
Questo caso particolare si verifica quando utilizzi una macro per il nome del database, il nome dello schema
nome della tabella e se non hai specificato manualmente uno schema di output. Lo schema viene rilevato e mappato in fase di runtime. La versione precedente del plug-in di origine batch di Oracle mappa il tipo di dati NUMBER
di Oracle definito senza precisione e scala al tipo di dati decimal(38,0)
di CDAP, mentre le versioni 1.9.1, 1.8.5 e 1.8.4 e successive mappano i tipi di dati a string
in fase di esecuzione.
Consiglio
Risolvere il possibile problema di perdita di precisione durante l'utilizzo di Oracle NUMBER
di dati con precisione e scalabilità non definite, esegui l'upgrade delle pipeline
Plug-in per origini batch Oracle 1.9.1, 1.8.5 o 1.8.4.
Dopo l'upgrade, il tipo di dati NUMBER
di Oracle definito senza precisione e scala viene mappato al tipo di dati NUMBER
di CDAP in fase di esecuzione. Se hai un
workstation o un destinazione in downstream che utilizza il tipo di dati decimal
CDAP originale (a
quanto è stato mappato il tipo di dati NUMBER
Oracle definito senza precisione e scala), aggiornatelo o prevedi che utilizzi i dati di stringa.
Se sei consapevole del rischio di una possibile perdita di dati a causa di errori di arrotondamento, ma
scegli di utilizzare il tipo di dati Oracle NUMBER definito senza precisione e scala
CDAP decimal(38,0)
, quindi esegui il deployment del plug-in Oracle versione 1.8.6 (per
Cloud Data Fusion 6.7.3) o 1.9.2 (per Cloud Data Fusion 6.8.1) da
l'hub e aggiorna le pipeline per utilizzarle.
Per ulteriori informazioni, consulta la documentazione di riferimento di Oracle Batch Source.
Elimina un cluster Dataproc temporaneo
Quando Cloud Data Fusion crea un cluster Dataproc temporaneo durante il provisioning dell'esecuzione della pipeline, il cluster viene eliminato al termine dell'esecuzione della pipeline. In rari casi, l'eliminazione del cluster non va a buon fine.
Fortemente consigliato: esegui l'upgrade alla versione più recente di Cloud Data Fusion per garantire una corretta manutenzione del cluster.
Imposta tempo di inattività massimo
Per risolvere il problema, configura Max Idle Time
. Questo consente a Dataproc di eliminare automaticamente i cluster, anche
una chiamata esplicita al completamento della pipeline non va a buon fine.
Max Idle Time
è disponibile in Cloud Data Fusion 6.4 e versioni successive.
Consigliato: per le versioni precedenti alla 6.6, imposta Max Idle Time
manualmente su almeno 30 minuti.
Elimina i cluster manualmente
Se non riesci a eseguire l'upgrade della versione o a configurare l'opzione Max Idle Time
, elimina manualmente i cluster inattivi:
Ottieni ogni ID progetto in cui sono stati creati i cluster:
Negli argomenti di runtime della pipeline, controlla se L'ID progetto Dataproc è personalizzato per l'esecuzione.
Se un ID progetto Dataproc non è specificato in modo esplicito, determinare quale provisioner utilizzare e quindi controllare se è presente un ID progetto:
Negli argomenti di runtime della pipeline, controlla
system.profile.name
valore.Apri le impostazioni del provisioning e controlla se l'ID progetto Dataproc è impostato. Se l'impostazione non è presente o se il campo è vuoto, viene indicato il progetto È in uso l'istanza Cloud Data Fusion in esecuzione.
Per ogni progetto:
Apri il progetto nella console Google Cloud e vai alla la pagina Cluster di Dataproc.
Ordina i cluster in base alla data di creazione, dal più antico al più recente.
Se il riquadro informazioni è nascosto, fai clic su Mostra riquadro informazioni e vai alla scheda Etichette.
Per ogni cluster che non è in uso, ad esempio, più di un giorno ha trascorso: controlla se ha un'etichetta per la versione di Cloud Data Fusion. Ciò indica che è stato creato da Cloud Data Fusion.
Seleziona la casella di controllo accanto al nome del cluster e fai clic su Elimina.
Impossibile creare l'istanza Cloud Data Fusion
Durante la creazione di un'istanza Cloud Data Fusion, potresti riscontrare seguente problema:
Read access to project PROJECT_NAME was denied.
Consiglio
Per risolvere il problema, disattiva e riattiva l'API Cloud Data Fusion. Quindi, crea l'istanza.
Le pipeline non funzionano quando vengono eseguite su cluster Dataproc con worker principali o secondari
Nelle versioni 6.8 e 6.9 di Cloud Data Fusion si verifica un problema che causa il fallimento delle pipeline se vengono eseguite su cluster Dataproc:
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.
Consiglio
Per risolvere il problema,
esegui l'upgrade alla revisione della patch6.8.3.1
, 6.9.2.1
o successiva.