Questa pagina mostra come risolvere i problemi relativi alle pipeline batch di Cloud Data Fusion.
Errore della pipeline: Text file busy
Quando esegui una pipeline batch, si verifica il seguente errore, che ne causa il fallimento:
error=26, Text file busy
Per risolvere il problema, configura un trigger che ritenta automaticamente una pipeline in caso di errore.
- Arresta la pipeline.
- Crea un trigger. In questo caso, quando selezioni un evento da eseguire, scegli Fails. Per ulteriori informazioni, consulta Creare un trigger in entrata su una pipeline downstream.
- Avvia la pipeline.
La pipeline simultanea è bloccata
In Cloud Data Fusion, l'esecuzione di molte pipeline batch simultanee 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 arrestate 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 dell'interfaccia utente effettuate all'handler HTTP nel backend.
Per risolvere il problema, controlla il numero di nuove richieste utilizzando il controllo del flusso di Cloud Data Fusion.
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)
Per risolvere il problema, segui questi passaggi:
- Verifica la presenza di una regola firewall mancante (in genere la porta 22). Per creare una nuova regola firewall, consulta Configurazione della rete del cluster di Managed Service for Apache Spark.
- Verifica che Compute Engine Enforcer consenta la connessione tra l'istanza Cloud Data Fusion e il cluster di Managed Service for Apache Spark.
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
Per risolvere il problema, devi
concedere il ruolo di Runner Cloud Data Fusion (roles/datafusion.runner)
al account di servizio utilizzato da Managed Service for Apache Spark.
La pipeline con il plug-in BigQuery non riesce a causa dell'errore Access Denied
È noto un problema per cui una pipeline non riesce a causa di un errore Access Denied durante l'esecuzione dei job BigQuery. Questo problema riguarda le pipeline che utilizzano i seguenti plug-in:
- Origini BigQuery
- Sink BigQuery
- Sink BigQuery Multi Table
- Pushdown della 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 che hai specificato nel plug-in. Il account di servizio per il progetto specificato nel plug-in non dispone dell'autorizzazione per eseguire almeno una delle seguenti operazioni:
- Eseguire un job BigQuery
- Leggere un set di dati BigQuery
- Creare un bucket temporaneo
- Creare un set di dati BigQuery
- Creare la tabella BigQuery
Per risolvere il problema, concedi i ruoli mancanti al progetto (PROJECT_ID) specificato nel plug-in:
Per eseguire un job BigQuery, concedi il ruolo BigQuery Job User (
roles/bigquery.jobUser).Per leggere un set di dati BigQuery, concedi il ruolo BigQuery Data Viewer (
roles/bigquery.dataViewer).Per creare un bucket temporaneo, concedi il ruolo Amministratore Storage (
roles/storage.admin).Per creare un set di dati o una tabella BigQuery, concedi il ruolo BigQuery Data Editor (
roles/bigquery.dataEditor).
Per ulteriori informazioni, consulta la documentazione sulla risoluzione dei problemi del plug-in (Risoluzione dei problemi del sink Google BigQuery Multi Table).
La pipeline non si arresta alla soglia di errore
Una pipeline potrebbe non arrestarsi dopo più errori, anche se hai impostato la soglia di errore su 1.
La soglia di errore è destinata a tutte le eccezioni generate dall'istruzione in caso di errore non gestito in altro modo. Se l'istruzione utilizza già l'API emitError, la soglia di errore non viene attivata.
Per progettare una pipeline che non riesce quando viene raggiunta una determinata soglia, utilizza l'
FAIListruzione.
Ogni volta che la condizione passata all'istruzione FAIL viene soddisfatta, viene conteggiata rispetto alla soglia di errore e la pipeline non riesce dopo il raggiungimento della soglia.
Eliminare un cluster temporaneo di Managed Service for Apache Spark
Quando Cloud Data Fusion crea un cluster temporaneo di Managed Service for Apache Spark 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.
Vivamente consigliato: esegui l'upgrade alla versione più recente di Cloud Data Fusion per garantire la corretta manutenzione del cluster.
Impostare il tempo massimo di inattività
Per risolvere il problema, configura l'Max Idle Time
opzione. In questo modo, Managed Service for Apache Spark elimina automaticamente i cluster, anche se una chiamata esplicita al termine della pipeline non riesce.
Max Idle Time è disponibile nelle versioni 6.4 e successive di Cloud Data Fusion.
Consigliato: per le versioni precedenti alla 6.6, imposta Max Idle Time manualmente su 30
minuti o più.
Eliminare manualmente i cluster
Se non puoi eseguire l'upgrade della versione o configurare l'opzione Max Idle Time, elimina manualmente i cluster obsoleti:
Recupera l'ID di ogni progetto in cui sono stati creati i cluster:
Negli argomenti di runtime della pipeline, verifica se l' ID progetto di Managed Service for Apache Spark è personalizzato per l'esecuzione.

Se non viene specificato esplicitamente un ID progetto di Managed Service for Apache Spark, determina quale provisioner viene utilizzato, quindi verifica la presenza di un ID progetto:
Negli argomenti di runtime della pipeline, controlla il
system.profile.namevalore.
Apri le impostazioni del provisioner e verifica se è impostato l' ID progetto di Managed Service for Apache Spark. 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 Google Cloud console e vai alla pagina Cluster di Managed Service for Apache Spark.
Ordina i cluster in base alla data di creazione, dal più vecchio al più recente.
Se il riquadro informazioni è nascosto, fai clic su Mostra riquadro informazioni e vai alla Etichette scheda.
Per ogni cluster non in uso, ad esempio se è trascorso più di un giorno, verifica se ha un'etichetta della versione di Cloud Data Fusion. Questo indica che è stato creato da Cloud Data Fusion.
Seleziona la casella di controllo accanto al nome del cluster e fai clic su Elimina.
Le pipeline non riescono quando vengono eseguite su cluster di Managed Service for Apache Spark con worker primari 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 di Managed Service for Apache Spark:
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.
Per risolvere il problema,
esegui l'upgrade alla revisione della patch
6.8.3.1, 6.9.2.1 o versioni successive.
Il plug-in Cloud Storage non riesce in modo intermittente con l'espressione regolare su Managed Service for Apache Spark 2.0
Le pipeline potrebbero non riuscire in modo intermittente nella versione 6.10.1 di Cloud Data Fusion quando il plug-in Cloud Storage utilizza un pattern di espressione regolare * nel percorso e l'ambiente di esecuzione è Managed Service for Apache Spark 2.0.
Per risolvere il problema, esegui una delle seguenti operazioni:
- Aggiorna l'immagine di Managed Service for Apache Spark alla versione 2.1 o successive.
- Ripristina una versione precedente del plug-in Cloud Storage.
- Aumenta la memoria allocata per l'executor di Managed Service for Apache Spark.
Le pipeline non riescono a causa di NoSuchMethodError su Managed Service for Apache Spark 2.2
Nella versione 6.10.1.1 e successive di Cloud Data Fusion, le pipeline potrebbero non riuscire a causa del seguente errore durante l'esecuzione su Managed Service for Apache Spark 2.2:
java.lang.NoSuchMethodError: 'org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
org.apache.spark.sql.catalyst.encoders.RowEncoder.apply(org.apache.spark.sql.types.StructType)'
Per risolvere il problema, esegui una delle seguenti operazioni:
- Riconfigura l'immagine di Managed Service for Apache Spark alla versione 2.1. Per ulteriori informazioni, consulta Modificare la versione dell'immagine di Managed Service for Apache Spark in Cloud Data Fusion.
- Esegui l'upgrade dell'istanza Cloud Data Fusion alla versione 6.11.
Il plug-in Multiple database tables non riesce se il nome di riferimento contiene spazi
Nella versione 6.10.1 e successive di Cloud Data Fusion, le pipeline che utilizzano l'origine batch Multiple database tables potrebbero non riuscire quando il campo Reference Name contiene spazi.
Per risolvere il problema, aggiorna il plug-in Multiple database tables alla versione 1.4.1 o successive dall'Hub. La versione aggiornata non consente spazi nel campo Reference Name.