2017-10-13 2 views
0

Ich bin auf der Suche nach der %storage Magie in einem Datalab Notebook, aber innerhalb einer Funktion. Die Zeile wie folgt aussieht:Führen Sie eine Magie aus einer Funktion in Google Cloud Datalab

%storage write --variable df --object $bucket_object 

und beim Aufruf der Funktion, die ich diesen Fehler:

Undefined variable referenced in command line: $bucket_object

bucket_object definiert ist zuvor in der Funktion, und das funktioniert, wenn sie außerhalb einer Funktion ausgeführt wird.

This answer in Bezug auf eine ähnliche Frage für ipython den Pfad empfiehlt zu finden und dann zu importieren wie:

from IPython.core.magics.display import Javascript

Gibt es einen ähnlichen Ansatz einer Datalab Magie des jeweiligen Funktion aufzurufen, so dass es innerhalb einer anderen Funktion funktionieren würde?

Antwort

2

Der% Speicher und andere ähnliche Befehle sind hauptsächlich syntaktischer Zucker über die zugrunde liegenden APIs.

Zum Beispiel in diesem Fall google.datalab.storage APIs. Die Dokumentation ist bei http://googledatalab.github.io/pydatalab/google.datalab.storage.html

So etwas wie dies funktionieren könnte:

import google.datalab.storage as storage 

bucket = storage.Bucket(bucket_name) 
obj = bucket.object(object_key) 
obj.write_stream(data, content_type) 

Hoffnung, das hilft.

+0

'write_stream' gibt diesen Fehler:" TypeError: write_stream() benötigt genau 3 Argumente (2 gegeben) ". Basierend auf der [Dokumentation] (http://googledatalab.github.io/pydatalab/_modules/google/datalab/storage/_object.html) sah es so aus, als ob "upload" funktioniert, aber das ergab diesen Fehler: "ValueError: Der Wahrheitswert eines DataFrames ist mehrdeutig. Verwenden Sie a.empty, a.bool(), a.item(), a.any() oder a.all(). " –

+0

Beachten Sie, dass write_stream auch den Inhaltstyp akzeptiert, also sollte es obj.write_stream (data, content_type) sein. –

Verwandte Themen