Questa pagina mostra come risolvere i problemi di Cloud Data Fusion.
Risolvere i problemi relativi alle pipeline batch
I seguenti consigli sono per le pipeline batch.
Errore della pipeline: file di testo occupato
Quando esegui una pipeline batch, si verifica il seguente errore che ne causa il fallimento:
error=26, Text file busy
Suggerimento
Per risolvere il problema, configura un attivatore che riprovi automaticamente una pipeline in caso di errore.
- Interrompi la pipeline.
- Crea un trigger. In questo caso, quando selezioni un evento da eseguire, scegli Non va a buon fine. Per ulteriori informazioni, consulta Creare un attivatore in entrata in una pipeline di elaborazione successiva.
- Avvia la pipeline.
La pipeline concorrente è 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.
Suggerimento
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.
La connessione SSH scade 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)`
Suggerimento
Per risolvere l'errore, controlla se sono presenti 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 del cluster Dataproc
- Verifica che l'applicazione dei criteri di Compute Engine consenta la connessione tra l'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`
Suggerimento
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 riesce con un errore Access Denied
Esiste un problema noto per cui una pipeline non va a buon fine con un errore Access Denied
durante l'esecuzione di job BigQuery. Questo influisce sulle pipeline che utilizzano i seguenti plug-in:
- Origini BigQuery
- Sink BigQuery
- Destinazioni BigQuery Multi Table
- 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
- Creare un bucket temporaneo
- Crea un set di dati BigQuery
- Crea la tabella BigQuery
Suggerimento
Per risolvere il problema, concedi i ruoli mancanti al progetto (PROJECT_ID) specificato nel plug-in:
Per eseguire un job BigQuery, concedi il ruolo Utenti job BigQuery (
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 per la risoluzione dei problemi del plug-in (Risoluzione dei problemi relativi all'erogazione in più tabelle di Google BigQuery).
La pipeline non si arresta alla soglia di errore
Una pipeline potrebbe non interrompersi dopo più errori, anche se imposti la soglia di errore su 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.
Suggerimento
Per progettare una pipeline che non va a buon fine quando viene raggiunta una determinata soglia, utilizza l'istruzione 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 dei plug-in 1.9.1, 1.8.4 e 1.8.5 non sono compatibili 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 della pipeline si basa sullo schema di output dell'origine perché lo schema di output è cambiato. Quando è definito uno schema di output per il tipo di dati Oracle NUMBER
definito senza precisione e scala nella 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 il seguente 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 nello schema di output dell'origine Oracle è presente un tipo di dati NUMBER
Oracle definito senza precisione e scala, l'utilizzo della versione precedente del plug-in Oracle non è consigliato, in quanto può portare a errori di arrotondamento.
Il caso speciale si verifica quando utilizzi una macro per il nome del database, del nome dello schema o 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.
Suggerimento
Per risolvere il possibile problema di perdita di precisione durante l'utilizzo dei tipi di dati NUMBER
Oracle con precisione e scalabilità non definite, esegui l'upgrade delle pipeline in modo da utilizzare
le versioni 1.9.1, 1.8.5 o 1.8.4 del plug-in di origine batch Oracle.
Dopo l'upgrade, il tipo di dati NUMBER
di Oracle definito senza precisione e scala viene mappato al tipo di dati string
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 conosci il rischio di una possibile perdita di dati a causa di errori di arrotondamento, ma scegli di utilizzare il tipo di dati NUMBER di Oracle definito senza precisione e scala come tipo di dati CDAP decimal(38,0)
, 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) dall'hub e aggiorna le pipeline in modo da utilizzarli.
Per ulteriori informazioni, consulta la sezione Oracle Batch Source reference (Riferimento a Oracle Batch Source).
Eliminare 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 riesce.
Fortemente consigliato: esegui l'upgrade alla versione più recente di Cloud Data Fusion per garantire una corretta manutenzione del cluster.
Imposta il tempo massimo di inattività
Per risolvere il problema, configura l'opzione Max Idle Time
. In questo modo, Dataproc può eliminare automaticamente i cluster anche se 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.
Eliminare 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:
Recupera 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 non viene specificato esplicitamente un ID progetto Dataproc, determina quale provider viene utilizzato e poi controlla se è presente un ID progetto:
Negli argomenti di runtime della pipeline, controlla il valore
system.profile.name
.Apri le impostazioni del provisioning e controlla se l'ID progetto Dataproc è impostato. Se l'impostazione non è presente o il campo è vuoto, viene utilizzato il progetto in cui è in esecuzione l'istanza Cloud Data Fusion.
Per ogni progetto:
Apri il progetto nella console Google Cloud e vai alla 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 non in uso, ad esempio se è trascorso più di un giorno, controlla se è presente un'etichetta della 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 il seguente problema:
Read access to project PROJECT_NAME was denied.
Suggerimento
Per risolvere il problema, disattiva e riattiva l'API Cloud Data Fusion. Quindi, crea l'istanza.
Le pipeline non riescono a essere eseguite sui 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.
Suggerimento
Per risolvere il problema,
esegui l'upgrade alla revisione della patch6.8.3.1
, 6.9.2.1
o successiva.