Probleme mit Cloud Data Fusion beheben

Auf dieser Seite wird beschrieben, wie Sie Probleme mit Cloud Data Fusion beheben.

Fehler bei Batchpipelines beheben

Die folgende Empfehlung gilt für Batchpipelines.

Pipelinefehler: Textdatei belegt

Der folgende Fehler tritt auf, wenn Sie eine Batchpipeline ausführen, wodurch sie fehlschlägt:

error=26, Text file busy

Empfehlung

Richten Sie einen Trigger ein, der eine Pipeline automatisch wiederholt, um dieses Problem zu beheben wenn er fehlschlägt.

  1. Beenden Sie die Pipeline.
  2. Erstellen Sie einen Trigger. In diesem Fall wählen Sie beim Auswählen eines auszuführenden Ereignisses Fehler. Weitere Informationen finden Sie unter Einen eingehenden Trigger in einer Downstream-Pipeline erstellen.
  3. Starten Sie die Pipeline.

Gleichzeitige Pipeline hängt

Das Ausführen vieler gleichzeitiger Batchpipelines in Cloud Data Fusion kann die Instanz belasten, was dazu führt, dass Jobs im Status Starting, Provisioning oder Running hängen bleiben. Daher können Pipelines nicht über die Weboberfläche oder API-Aufrufe beendet werden. Wenn Sie viele Pipelines gleichzeitig ausführen, kann die Weboberfläche langsam werden oder nicht mehr reagieren. Dieses Problem tritt aufgrund mehrerer UI-Anfragen an den HTTP-Handler im Backend auf.

Empfehlung

Um dieses Problem zu beheben, steuern Sie die Anzahl der neuen Anfragen mithilfe der Cloud Data Fusion-Ablaufsteuerung, die in Instanzen verfügbar ist, in denen Version 6.6 oder höher ausgeführt wird.

Zeitüberschreitung bei SSH-Verbindung bei laufender 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)`

Empfehlung

Prüfen Sie Folgendes, um den Fehler zu beheben:

  • Suchen Sie nach einer fehlenden Firewallregel (normalerweise Port 22). Informationen zum Erstellen einer neuen Firewallregel finden Sie unter Dataproc-Cluster – Netzwerkkonfiguration.
  • Prüfen Sie, ob der Compute Engine Enforcer die Verbindung zwischen Ihrer Cloud Data Fusion-Instanz und dem Dataproc-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`

Empfehlung

Um diesen Fehler zu beheben, müssen Sie dem von Dataproc verwendeten Dienstkonto 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

Empfehlung

Zum Beheben dieses Problems weisen Sie dem Projekt (PROJECT_ID), das Sie im Plug-in angegeben haben, die fehlenden Rollen zu:

  • Gewähren Sie den BigQuery-Job, um einen BigQuery-Job auszuführen Nutzerrolle (roles/bigquery.jobUser)

  • Um ein BigQuery-Dataset zu lesen, müssen Sie dem BigQuery-Team Rolle „Datenbetrachter“ (roles/bigquery.dataViewer).

  • Erteilen Sie die Rolle „Storage-Administrator“, um einen temporären Bucket zu erstellen (roles/storage.admin).

  • 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 endet nicht beim Fehlerschwellenwert

Eine Pipeline wird möglicherweise nach mehreren Fehlern nicht beendet, selbst wenn Sie den Fehler Grenzwert auf 1.

Der Fehlerschwellenwert ist für alle Ausnahmen vorgesehen, die von der Anweisung in wenn ein Fehler auftritt, der sonst nicht behandelt wird. Wenn die Direktive bereits die emitError API verwendet, ist der Fehlergrenzwert nicht aktiviert.

Empfehlung

Um eine Pipeline zu entwerfen, die fehlschlägt, wenn ein bestimmter Schwellenwert erreicht wird, verwenden Sie die Methode FAIL-Anweisung.

Wenn die an die FAIL-Anweisung übergebene Bedingung erfüllt ist, zählt dies. gegen den Fehlerschwellenwert und die Pipeline schlägt fehl, nachdem der Schwellenwert erreicht haben.

Oracle-Batch-Quell-Plug-in wandelt NUMBER in string um

In den Oracle-Batchquellenversionen 1.9.0, 1.8.3 und niedriger wird der Oracle-Datentyp NUMBER mit nicht definierter Genauigkeit und Skalierung dem CDAP-Datentyp decimal(38,0) zugeordnet.

Die Plug-in-Versionen 1.9.1, 1.8.4 und 1.8.5 sind abwärtsinkompatibel und Pipelines die ältere Versionen verwenden, funktionieren nach dem Upgrade auf Version 1.9.1, 1.8.5 und 1.8.4, wenn eine nachgelagerte Phase in der Pipeline auf die Ausgabe angewiesen ist der Quelle, weil sich das Ausgabeschema geändert hat. Wenn es eine Ausgabeschema, das für den Oracle-Datentyp NUMBER definiert ist, ohne Genauigkeit und Skalierung in der vorherigen Plug-in-Version nach dem Upgrade auf Versionen 1.9.1, 1.8.5 oder 1.8.4 gibt das Oracle-Batch-Quell-Plug-in Folgendes aus: Schemakonfliktfehler für folgende Typen: 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.

Die Versionen 1.9.1, 1.8.5 und 1.8.4 funktionieren mit einem Ausgabeschema des CDAP-Datentyps string für den Oracle-Datentyp NUMBER, der ohne Genauigkeit und Skala definiert ist. Wenn ein Oracle-Datentyp NUMBER ohne Precision und im Oracle-Quellausgabeschema vorhandene Skalierung unter Verwendung der älteren Version des Das Oracle-Plug-in wird nicht empfohlen, da es zu Rundungsfehlern führen kann.

Der Sonderfall ist, wenn Sie ein Makro für den Datenbanknamen, den Schemanamen oder den Tabellennamen verwenden und wenn Sie kein Ausgabeschema manuell angegeben haben. Das Schema wird zur Laufzeit erkannt und zugeordnet. Die ältere Version des Oracle-Batchquellen-Plug-ins ordnet den Oracle-Datentyp NUMBER, der ohne Genauigkeit und Skalierung definiert ist, dem CDAP-Datentyp decimal(38,0) zu. In den Versionen 1.9.1, 1.8.5, 1.8.4 und höher werden die Datentypen zur Laufzeit string zugeordnet.

Empfehlung

Um das mögliche Problem mit dem Genauigkeitsverlust bei der Arbeit mit Oracle-NUMBER-Datentypen mit nicht definierter Genauigkeit und Skalierung zu beheben, aktualisieren Sie Ihre Pipelines auf die Oracle-Batch-Quell-Plug-in-Versionen 1.9.1, 1.8.5 oder 1.8.4.

Nach dem Upgrade wurde der Oracle-Datentyp NUMBER ohne Genauigkeit und Skalierung wird zur Laufzeit dem CDAP-Datentyp string zugeordnet. Wenn Sie eine nachgelagerte Phase oder Senke haben, die den ursprünglichen CDAP-decimal-Datentyp verwendet (dem der Oracle-NUMBER-Datentyp ohne Genauigkeit und Skala zugeordnet wurde), aktualisieren Sie sie oder gehen Sie davon aus, dass sie Stringdaten verbrauchen.

Wenn Sie sich des Risikos möglicher Datenverluste durch Rundungsfehler bewusst sind, aber den Oracle-Datentyp „NUMBER“, der ohne Genauigkeit und Skala definiert ist, als CDAP-Datentyp decimal(38,0) verwenden möchten, dann stellen Sie das Oracle-Plug-in 1.8.6 (für Cloud Data Fusion 6.7.3) oder 1.9.2 (für Cloud Data Fusion 6.8.1) aus dem Hub bereit und aktualisieren Sie die Pipelines, damit sie stattdessen verwendet werden.

Weitere Informationen finden Sie in der Oracle Batch Source-Referenz

Sitzungsspezifischen Dataproc-Cluster löschen

Wenn Cloud Data Fusion während der Bereitstellung einer Pipelineausführung einen sitzungsspezifischen Dataproc-Cluster erstellt, wird der Cluster nach Abschluss der Pipelineausführung gelöscht. In seltenen Fällen schlägt das Löschen des Clusters fehl.

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

Konfigurieren Sie den Max Idle Time, um dieses Problem zu beheben Option. So können Cluster in Dataproc automatisch gelöscht werden, auch wenn ein expliziter Aufruf zum Pipelineende fehlschlägt.

Max Idle Time ist in Cloud Data Fusion ab Version 6.4 verfügbar.

Empfohlen: Legen Sie für Versionen vor 6.6 Max Idle Time manuell auf 30 fest. Minuten oder länger.

Cluster manuell löschen

Wenn Sie weder ein Upgrade Ihrer Version noch die Option Max Idle Time konfigurieren können, Löschen Sie veraltete Cluster stattdessen manuell:

  1. Rufen Sie die Projekt-IDs ab, in denen die Cluster erstellt wurden:

    1. Prüfen Sie in den Laufzeitargumenten der Pipeline, ob die Dataproc-Projekt-ID für die Ausführung angepasst ist.

      Prüfen, ob die Dataproc-Projekt-ID für die Ausführung angepasst ist

    2. Wenn keine Dataproc-Projekt-ID explizit angegeben ist, ermitteln Sie, welcher Bereitsteller verwendet wird, und suchen Sie dann nach einer Projekt-ID:

      1. Prüfen Sie in den Laufzeitargumenten der Pipeline den Wert für system.profile.name.

        Namen des Bereitstellers in den Laufzeitargumenten abrufen

      2. Öffnen Sie die Bereitstellereinstellungen und prüfen Sie, ob die Die Dataproc-Projekt-ID ist festgelegt. Wenn die Einstellung nicht vorhanden ist oder das Feld leer ist, wird das Projekt verwendet, in dem die Cloud Data Fusion-Instanz ausgeführt wird.

  2. Für jedes Projekt gilt:

    1. Öffnen Sie das Projekt in der Google Cloud Console und rufen Sie die Seite Cluster von Dataproc auf.

      Zu den Clustern

    2. Sortieren Sie die Cluster nach dem Erstellungsdatum, vom ältesten bis zum Neuestes.

    3. Wenn das Infofeld ausgeblendet ist, klicken Sie auf Infofeld anzeigen und gehen Sie zur Labels.

    4. Für jeden nicht genutzten Cluster, z. B. für mehr als einen Tag, Verstrichen: Prüfen Sie, ob sie ein Cloud Data Fusion-Versionslabel hat. Das ist ein Hinweis darauf, dass es mit Cloud Data Fusion erstellt wurde.

    5. Klicken Sie das Kästchen neben dem Clusternamen an und klicken Sie auf Löschen.

Cloud Data Fusion-Instanz kann nicht erstellt werden

Beim Erstellen einer Cloud Data Fusion-Instanz kann es vorkommen, folgendes Problem:

Read access to project PROJECT_NAME was denied.

Empfehlung

Deaktivieren Sie die Cloud Data Fusion API und aktivieren Sie sie dann wieder, um das Problem zu beheben. Erstellen Sie dann die Instanz.

Pipelines schlagen fehl, wenn sie auf Dataproc-Clustern mit primären oder sekundären Workern ausgeführt werden

In den Cloud Data Fusion-Versionen 6.8 und 6.9 tritt ein Problem auf, Pipelines schlagen fehl, wenn sie in Dataproc-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.

Empfehlung

So beheben Sie das Problem: Upgrade auf den Patch Version 6.8.3.1, 6.9.2.1 oder höher.