Auf dieser Seite wird beschrieben, wie Sie Probleme mit den Batch-Pipelines von Cloud Data Fusion beheben.
Pipelinefehler: Textdatei ist beschäftigt
Der folgende Fehler tritt auf, wenn Sie eine Batch-Pipeline ausführen, wodurch sie fehlschlägt:
error=26, Text file busy
Um dieses Problem zu beheben, richten Sie einen Trigger ein, der eine Pipeline automatisch noch einmal ausführt, wenn sie fehlschlägt.
- Halten Sie die Pipeline an.
- Erstellen Sie einen Trigger. Wenn Sie in diesem Fall ein auszuführendes Ereignis auswählen, wählen Sie Fehler aus. Weitere Informationen finden Sie unter Inbound-Trigger für eine Downstream Pipeline erstellen.
- Starten Sie die Pipeline.
Gleichzeitige Pipeline hängt
Wenn in Cloud Data Fusion viele Batch-Pipelines gleichzeitig ausgeführt werden, kann dies die Instanz belasten und dazu führen, dass Jobs im Status Starting, Provisioning oder Running hängen bleiben. Daher können Pipelines nicht über die Web-UI oder API-Aufrufe angehalten werden. Wenn Sie viele Pipelines gleichzeitig ausführen, kann die Web-UI langsam oder nicht mehr reaktionsfähig werden. Dieses Problem tritt aufgrund mehrerer UI-Anfragen an den HTTP-Handler im Backend auf.
Um dieses Problem zu beheben, steuern Sie die Anzahl der neuen Anfragen mit der Cloud Data Fusion-Ablaufsteuerung.
Zeitüberschreitung der SSH-Verbindung während der Ausführung einer Pipeline
Der folgende Fehler tritt auf, wenn Sie eine Batch-Pipeline ausführen:
java.io.IOException: com.jcraft.jsch.JSchException:
java.net.ConnectException: Connection timed out (Connection timed out)
So beheben Sie das Problem:
- Prüfen Sie, ob eine Firewallregel fehlt (in der Regel Port 22). Informationen zum Erstellen einer neuen Firewallregel finden Sie unter Netzwerkkonfiguration für Managed Service for Apache Spark-Cluster.
- Prüfen Sie, ob der Compute Engine-Enforcer die Verbindung zwischen Ihrer Cloud Data Fusion-Instanz und dem Managed Service for Apache Spark-Cluster zulässt.
Antwortcode: 401. Fehler: unbekannter Fehler
Der folgende Fehler tritt auf, wenn Sie eine Batch-Pipeline ausführen:
java.io.IOException: Failed to send message for program run program_run:
Response code: 401. Error: unknown error
Um dieses Problem zu beheben, müssen Sie
dem Dienstkonto, das von Managed Service for Apache Spark verwendet wird, die Rolle „Cloud Data Fusion-Runner“ (roles/datafusion.runner)
zuweisen.
Pipeline mit BigQuery-Plug-in schlägt mit dem Fehler Access Denied fehl
Es gibt ein bekanntes Problem, bei dem eine Pipeline beim Ausführen von BigQuery-Jobs mit dem Fehler Access Denied fehlschlägt. Dies wirkt sich auf Pipelines aus, die die folgenden Plug-ins verwenden:
- BigQuery-Quellen
- BigQuery-Senken
- BigQuery-Multitabellensenken
- Transformations-Push-down
Beispielfehler in den Logs (kann je nach verwendetem Plug-in variieren):
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 diesem Beispiel ist PROJECT_ID die Projekt-ID, die Sie im Plug-in angegeben haben. Das Dienstkonto für das im Plug-in angegebene Projekt ist nicht berechtigt, mindestens einen der folgenden Schritte auszuführen:
- BigQuery-Job ausführen
- BigQuery-Dataset lesen
- Temporären Bucket erstellen
- BigQuery-Dataset erstellen
- BigQuery-Tabelle erstellen
Zum Beheben dieses Problems weisen Sie dem Projekt (PROJECT_ID), das Sie im Plug-in angegeben haben, die fehlenden Rollen zu:
Weisen Sie zum Ausführen eines BigQuery-Jobs die Rolle „BigQuery-Job nutzer“ (
roles/bigquery.jobUser) zu.Wenn Sie ein BigQuery-Dataset lesen möchten, weisen Sie die Rolle „BigQuery Datenbetrachter“ (
roles/bigquery.dataViewer) zu.Zum Erstellen eines temporären Buckets weisen Sie die Rolle „Storage-Administrator“ (
roles/storage.admin) zu.Weisen Sie zum Erstellen eines BigQuery-Datasets oder einer BigQuery-Tabelle die Rolle „BigQuery-Datenbearbeiter“ (
roles/bigquery.dataEditor) zu.
Weitere Informationen finden Sie in der Dokumentation zur Fehlerbehebung für das Plug-in (Fehlerbehebung bei Google BigQuery-Multitabellensenken).
Pipeline wird nicht beim Erreichen des Fehlerschwellenwerts angehalten
Eine Pipeline wird möglicherweise nicht nach mehreren Fehlern angehalten, auch wenn Sie den Fehlerschwellenwert auf 1 festgelegt haben.
Der Fehlerschwellenwert ist für alle Ausnahmen vorgesehen, die von der Anweisung im Falle eines Fehlers ausgelöst werden, der nicht anderweitig behandelt wird. Wenn die Anweisung bereits die emitError API verwendet, wird der Fehlerschwellenwert nicht aktiviert.
Verwenden Sie die
FAIL Anweisung, um eine Pipeline zu entwerfen, die fehlschlägt, wenn ein bestimmter Schwellenwert erreicht wird.
Jedes Mal, wenn die an die Anweisung FAIL übergebene Bedingung erfüllt ist, wird sie auf den Fehlerschwellenwert angerechnet und die Pipeline schlägt fehl, nachdem der Schwellenwert erreicht wurde.
Sitzungsspezifischen Managed Service for Apache Spark-Cluster löschen
Wenn Cloud Data Fusion während der Bereitstellung der Pipelineausführung einen sitzungsspezifischen Managed Service for Apache Spark-Cluster erstellt, wird der Cluster gelöscht, nachdem die Pipelineausführung abgeschlossen ist. In seltenen Fällen schlägt das Löschen des Clusters fehl.
Dringend empfohlen: Führen Sie ein Upgrade auf die neueste Cloud Data Fusion- Version durch, um eine ordnungsgemäße Clusterwartung zu gewährleisten.
Maximale Inaktivitätszeit festlegen
Um dieses Problem zu beheben, konfigurieren Sie die Max Idle Time
Option. So kann Managed Service for Apache Spark Cluster automatisch löschen, auch wenn ein expliziter Aufruf zum Beenden der Pipeline fehlschlägt.
Max Idle Time ist in Cloud Data Fusion Version 6.4 und höher verfügbar.
Empfohlen: Legen Sie für Versionen vor 6.6 Max Idle Time manuell auf 30
Minuten oder mehr fest.
Cluster manuell löschen
Wenn Sie Ihre Version nicht aktualisieren oder die Option Max Idle Time nicht konfigurieren können, löschen Sie stattdessen veraltete Cluster manuell:
Rufen Sie die Projekt-ID für jedes Projekt ab, in dem die Cluster erstellt wurden:
Prüfen Sie in den Laufzeitargumenten der Pipeline, ob die Managed Service for Apache Spark-Projekt-ID für die Ausführung angepasst wurde.

Wenn keine Managed Service for Apache Spark-Projekt-ID explizit angegeben ist, ermitteln Sie, welcher Bereitsteller verwendet wird, und prüfen Sie dann, ob eine Projekt-ID vorhanden ist:
Prüfen Sie in den Laufzeitargumenten der Pipeline den
system.profile.nameWert.
Öffnen Sie die Bereitstellereinstellungen und prüfen Sie, ob die Managed Service for Apache Spark-Projekt-ID festgelegt ist. Wenn die Einstellung nicht vorhanden oder das Feld leer ist, wird das Projekt verwendet, in dem die Cloud Data Fusion-Instanz ausgeführt wird.
Für jedes Projekt:
Öffnen Sie das Projekt in der Google Cloud console und rufen Sie die Seite Cluster von Managed Service for Apache Spark auf.
Sortieren Sie die Cluster nach dem Erstellungsdatum, vom ältesten zum neuesten.
Wenn das Infofeld ausgeblendet ist, klicken Sie auf Infofeld ansehen und rufen Sie den Labels Tab auf.
Prüfen Sie für jeden Cluster, der nicht verwendet wird (z. B. wenn mehr als ein Tag vergangen ist), ob er ein Label für die Cloud Data Fusion-Version hat. Das ist ein Hinweis darauf, dass er von Cloud Data Fusion erstellt wurde.
Klicken Sie auf das Kästchen neben dem Clusternamen und dann auf Löschen.
Pipelines schlagen fehl, wenn sie auf Managed Service for Apache Spark-Clustern mit primären oder sekundären Workern ausgeführt werden
In Cloud Data Fusion Version 6.8 und 6.9 tritt ein Problem auf, das dazu führt, dass Pipelines fehlschlagen, wenn sie auf Managed Service for Apache Spark-Clustern ausgeführt werden:
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.
Aktualisieren Sie auf die Patch
revision 6.8.3.1, 6.9.2.1 oder höher, um dieses Problem zu beheben.
upgrade
Cloud Storage-Plug-in schlägt zeitweise mit regulärem Ausdruck auf Managed Service for Apache Spark 2.0 fehl
Pipelines schlagen in Cloud Data Fusion Version 6.10.1 möglicherweise zeitweise fehl, wenn das Cloud Storage-Plug-in ein reguläres Ausdrucksmuster * im Pfad verwendet und die Ausführungsumgebung Managed Service for Apache Spark 2.0 ist.
So beheben Sie das Problem:
- Aktualisieren Sie das Managed Service for Apache Spark-Image auf Version 2.1 oder höher.
- Kehren Sie zu einer früheren Version des Cloud Storage-Plug-ins zurück.
- Erhöhen Sie den für den Managed Service for Apache Spark-Executor zugewiesenen Arbeitsspeicher.
Pipelines schlagen mit NoSuchMethodError auf Managed Service for Apache Spark 2.2 fehl
In Cloud Data Fusion Version 6.10.1.1 und höher schlagen Pipelines möglicherweise mit dem folgenden Fehler fehl, wenn sie auf Managed Service for Apache Spark 2.2 ausgeführt werden:
java.lang.NoSuchMethodError: 'org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
org.apache.spark.sql.catalyst.encoders.RowEncoder.apply(org.apache.spark.sql.types.StructType)'
So beheben Sie das Problem:
- Konfigurieren Sie das Managed Service for Apache Spark-Image neu auf Version 2.1. Weitere Informationen finden Sie unter Managed Service for Apache Spark-Imageversion in Cloud Data Fusion ändern.
- Aktualisieren Sie Ihre Cloud Data Fusion-Instanz auf Version 6.11.
Plug-in für mehrere Datenbanktabellen schlägt fehl, wenn der Referenzname Leerzeichen enthält
In Cloud Data Fusion Version 6.10.1 und höher schlagen Pipelines, die die Batch-Quelle für mehrere Datenbanktabellen verwenden, möglicherweise fehl, wenn das Feld Referenzname Leerzeichen enthält.
Aktualisieren Sie das Plug-in für mehrere Datenbanktabellen im Hub auf Version 1.4.1 oder höher, um dieses Problem zu beheben. In der aktualisierten Version sind keine Leerzeichen im Feld Referenzname zulässig.