Probleme mit Cloud Data Fusion beheben

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

Fehlerbehebung bei Batchpipelines

Die folgenden Empfehlungen gelten für Batchpipelines.

Pipelinefehler: Textdatei belegt

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

error=26, Text file busy

Empfehlung

Richten Sie einen Trigger ein, der eine Pipeline automatisch noch einmal ausführt, wenn ein Fehler auftritt, um dieses Problem zu beheben.

  1. Beenden Sie die Pipeline.
  2. Erstellen Sie einen Trigger. Wählen Sie in diesem Fall Fehlschlägt aus. Weitere Informationen finden Sie unter Einen eingehenden Trigger in einer Downstream-Pipeline erstellen.
  3. Starten Sie die Pipeline.

Gleichzeitige Pipeline hängt

Wenn Sie in Cloud Data Fusion viele gleichzeitige Batchpipelines ausführen, kann das 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 Weboberfläche oder API-Aufrufe angehalten 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.

SSH-Verbindung überschreitet Zeitlimit während einer laufenden 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:

  • Prüfen Sie, ob eine Firewallregel fehlt (in der Regel 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:

  • Weisen Sie zum Ausführen eines BigQuery-Jobs die Rolle „BigQuery-Jobnutzer“ (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 am Fehlergrenzwert beendet

Eine Pipeline wird möglicherweise nicht nach mehreren Fehlern angehalten, auch wenn Sie den Fehlergrenzwert auf 1 festlegen.

Der Fehlergrenzwert gilt für alle Ausnahmen, die von der Anweisung ausgelöst werden, wenn ein Fehler auftritt, der nicht anderweitig behandelt wird. Wenn die Direktive bereits die emitError API verwendet, ist der Fehlergrenzwert nicht aktiviert.

Empfehlung

Wenn Sie eine Pipeline entwerfen möchten, die fehlschlägt, wenn ein bestimmter Grenzwert erreicht wird, verwenden Sie die Direktive FAIL.

Jedes Mal, wenn die an die FAIL-Richtlinie übergebene Bedingung erfüllt ist, wird sie auf den Fehlergrenzwert angerechnet und die Pipeline schlägt fehl, wenn der Grenzwert erreicht wird.

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 nicht abwärtskompatibel. Pipelines, die frühere Versionen verwenden, funktionieren nach dem Upgrade auf Version 1.9.1, 1.8.5 und 1.8.4 möglicherweise nicht, wenn eine nachgelagerte Phase in der Pipeline auf dem Ausgabeschema der Quelle basiert, weil sich das Ausgabeschema geändert hat. Wenn für den Oracle-Datentyp NUMBER in der vorherigen Plug-in-Version ein Ausgabeschema ohne Genauigkeit und Skalierung definiert ist, wird nach dem Upgrade auf die Versionen 1.9.1, 1.8.5 oder 1.8.4 vom Oracle-Batch-Quell-Plug-in der folgende Schema-Nichtübereinstimmungsfehler für die Typen ausgegeben: 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 Skalierung definiert ist. Wenn im Oracle-Quellausgabeschema ein Oracle-NUMBER-Datentyp ohne Genauigkeit und Skalierung definiert ist, wird die Verwendung der älteren Version des Oracle-Plug-ins nicht empfohlen, da dies 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. In der älteren Version des Oracle-Batchquellen-Plug-ins wird der Oracle-Datentyp NUMBER, der ohne Genauigkeit und Skalierung definiert ist, dem CDAP-Datentyp decimal(38,0) zugeordnet. In den Versionen 1.9.1, 1.8.5, 1.8.4 und höher werden die Datentypen zur Laufzeit zu 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 wird der Oracle-Datentyp NUMBER, der ohne Genauigkeit und Skalierung definiert ist, 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 String-Daten 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, können 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 bereitstellen und die Pipelines so aktualisieren, dass sie stattdessen verwendet werden.

Weitere Informationen finden Sie in der Referenz zur Oracle-Batchquelle.

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 die Option Max Idle Time, um dieses Problem zu beheben. 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 Version 6.4 und höher verfügbar.

Empfohlen: Bei Versionen vor 6.6 muss Max Idle Time manuell auf mindestens 30 Minuten festgelegt werden.

Cluster manuell löschen

Wenn Sie Ihre Version nicht aktualisieren oder die Option Max Idle Time nicht 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.

        Name des Bereitstellers in den Laufzeitargumenten abrufen

      2. Öffnen Sie die Bereitstellungseinstellungen und prüfen Sie, ob die Dataproc-Projekt-ID festgelegt ist. 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:

    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, von alt nach neu.

    3. Wenn das Infofeld ausgeblendet ist, klicken Sie auf Infofeld ansehen und gehen Sie zum Tab Labels.

    4. Prüfen Sie bei jedem 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 es mit Cloud Data Fusion erstellt wurde.

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

Cloud Data Fusion-Instanz kann nicht erstellt werden

Beim Erstellen einer Cloud Data Fusion-Instanz kann das folgende Problem auftreten:

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 Cloud Data Fusion-Versionen 6.8 und 6.9 tritt ein Problem auf, das dazu führt, dass Pipelines fehlschlagen, wenn sie auf 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

Führen Sie ein Upgrade auf die Patchversion 6.8.3.1, 6.9.2.1 oder höher durch, um das Problem zu beheben.