0

Ich versuche, dieses einfache Datenfluss Beispiel von Google Wolken Website zu folgen: https://cloud.google.com/dataflow/getting-started-eclipseGoogle Cloud Storage: Ausgabepfad existiert nicht oder ist nicht beschreibbar

Ich habe erfolgreich den Datenfluss Pipeline-Plugin und gcloud sdk (auch installiert als Python 2.7). Ich habe auch ein Projekt in Google Cloud eingerichtet und die Abrechnung und alle erforderlichen APIs aktiviert - wie in den obigen Anweisungen beschrieben.

Allerdings, wenn ich auf die Ausführungskonfigurationen gehen und die Registerkarte Pipeline Argumente ändern BlockingDataflowPipelineRunner zu wählen, nach der Eingabe einen Eimer zu schaffen und mein Projekt-ID-Einstellung, Lauf schlagen gibt mir:

Verursacht durch: java.lang .IllegalArgumentException: Der Ausgabepfad existiert nicht oder kann nicht geschrieben werden: gs: // my-cloud-dataflow-bucket unter com.google.cloud.dataflow.sdk.repackaged.com.google.common.base.Preconditions.checkArgument (Preconditions.java:146) unter com.google.cloud.dataflow.sdk.util.DataflowPathValidator.verifyPathIsAccessible (DataflowPathValidator.java:79) unter com.google.cloud.dataflow.sdk.util.DataflowPathValidator.validateOutputFilePrefixSupporte d (DataflowPathValidator.java:62) bei com.google.cloud.dataflow.sdk.runners.DataflowPipelineRunner.fromOptions (DataflowPipelineRunner.java:255) bei com.google.cloud.dataflow.sdk.runners.BlockingDataflowPipelineRunner.fromOptions (BlockingDataflowPipelineRunner.java:82) ... 9 weitere

ich meinen Terminal verwendet habe ‚gcloud auth login‘ auszuführen, und ich sehe im Browser, die ich erfolgreich angemeldet bin.

ich bin wirklich nicht sicher, was ich hier falsch gemacht habe. Kann jemand bestätigen, dass dies ein bekanntes Problem bei der Verwendung von Datenfluss-Pipeline und Google-Buckets ist?

Danke!

+0

Können Sie versuchen, 'gsutil ls gs: // Mein-Cloud-Datenfluss-Bucket 'in der Befehlszeile auszuführen? (Ich werde zuerst eine generische Antwort geben, und die Folge mit einer spezifischeren, sobald wir die Ursache herausgefunden haben.) –

Antwort

1

Beim Übermitteln von Pipelines an den Google Cloud Dataflow-Dienst lädt der Pipeline-Runner auf Ihrem lokalen Computer Dateien, die für die Ausführung in der Cloud erforderlich sind, zu einem "Staging-Speicherort" in Google Cloud Storage.

Der Pipeline-Runner auf Ihrem lokalen Computer scheint nicht in der Lage zu sein, die erforderlichen Dateien an den bereitgestellten Bereitstellungsort zu schreiben (gs://my-cloud-dataflow-bucket). Es kann sein, dass der Speicherort nicht existiert oder dass er zu einem anderen GCP-Projekt gehört, als Sie authentifiziert haben, oder dass für diesen Bereich usw. spezifischere Berechtigungen festgelegt sind.

Sie können das Debuggen des Problems über starten gsutil Befehlszeile auch. Versuchen Sie beispielsweise, gsutil ls gs://my-cloud-dataflow-bucket auszuführen, um den Inhalt des Buckets aufzulisten. Versuchen Sie dann, über den Befehl gsutil cp hochzuladen. Dies wird möglicherweise genug Informationen liefern, um das Problem, dem Sie gegenüberstehen, zu lösen.

+0

Ich habe die folgenden Befehle in meinem Terminal ausgeführt: Ihr aktuelles Projekt ist [rosh-test].Sie können diese Einstellung ändern, indem Sie: $ gcloud Konfig.satz Projekt PROJECT_ID Roshs-MacBook-Air: ~ RoshPlaha $ gsutil ls gs: // my-Cloud-Datenfluß-bucket AccessDeniedException: 403 Forbidden Ich möchte darauf hinweisen, Im Eclipse-Dataflow-Plugin habe ich beim Erstellen des Projekts den Namen des Buckets angegeben und dann auf "Erstellen" geklickt. Eclipse sagte mir, dass die Erstellung des Eimers erfolgreich war. Wenn ich jedoch nach gcp suche, um zu sehen, ob der Bucket existiert, sagt er, dass es nicht existiert. – RoshP

+0

Außerdem, wenn ich versuche, den gleichen Eimer manuell zu erstellen - es sagt, dass ich nicht zwei Eimer mit dem gleichen Namen haben kann! In gcp starte ich gsutil und ran: gsutil acl ch -u [email protected]: W gs: // mein-cloud-data-flow-bucket. Das gibt jedoch auch einen 403 verbotenen Fehler. – RoshP

+0

Ein paar Dinge zu überprüfen: Stellen Sie sicher, dass Ihr Konto mindestens ein Editor für das Projekt ist, vergessen Sie nicht, 'gcloud auth login' auszuführen. Stellen Sie außerdem beim Erstellen des Buckets sicher, dass der Projektname angegeben ist. Wenn dies fehlschlägt, empfehle ich, den Bucket manuell in der Entwicklerkonsole zu erstellen und ihn nur in Eclipse zu verwenden. –

-2

Ich erkannte, dass ich einen bestimmten ACL-Befehl über gsutil verwenden musste. Wenn ich mein Konto so eingerichtet habe, dass ich über Besitzerberechtigungen verfüge, wurde die Aufgabe nicht ausgeführt. Statt mit:

gsutil acl gesetzt öffentlich-Lese-Schreib-gs: // my-Eimer-name-hier

in diesem Fall gearbeitet. Hoffe das hilft jemandem!

+1

Wir sollten Benutzer nicht dazu ermutigen, 'public-read-write' zu ​​aktivieren Ihre Buckets.Dies ist nicht notwendig.Editors des Projekts müssen einen Schreibzugriff haben, sowie die Service-Konten.Dann müssen Sie als einer der Editoren authentifizieren, und das sollte genug sein. –