2016-09-06 21 views
1

GCPを使用して、廃止予定のCloud Datalab Deployerのデータをdocker Datalabコンテナに正常に移行しました。私はMacOSを使用しており、ホームディレクトリがコンテナの/contentディレクトリに接続されていることがわかります。だから私のノートブックはDatalab Jupyterインターフェースでアクセス可能です。JupyterのPythonセルからDatalabのコンテナ内のファイルにアクセスできない

私のノートブックには、ノートブック自体と同じディレクトリにあるテキストファイルからストップワードリストをロードするテキスト処理ルーチンがあります。 しかし、私はPythonコードから/contentディレクトリ内のファイルの1へのアクセスを持ってしようとしたとき、私は「ファイルが存在しません」というエラー受信:私はlsコマンドを実行したとき、私は見ることができない、実際

>>> stopwords_full = load_stopwords_from_file('./stopwords/verylong_words_list.txt') 

IOError: File ./stopwords/verylong_words_list.txt does not exist 

をなど、そのすべてのサブファイルとディレクトリ/content:Datalabの古いバージョンで

>>> !ls 
bin dev lib mnt  proc sbin sys usr 
boot  etc lib64 node_modules root srcs tmp var 
datalab home media opt  run srv tools 

は、私がこのようなエラーを持っていませんでした。

Datalab Jupyterのpythonセルから、/contentディレクトリにあるファイルで作業するにはどうすればよいですか?

+0

GCPでDatalabを使用すると、 '!hostname'はデータラブゲートウェイのホスト名を示しています。 [Datalab local](https://cloud.google.com/datalab/docs/quickstarts/quickstart-local)設定を使用すると、ローカルコンテナのホスト名が表示されます。 '!ls'を実行するとローカルファイルにアクセスし、' content'フォルダを見ることができます。 GCPでDatalabを使用する際にファイルにアクセスする可能性のある回避策の1つは、Google Cloud Storageを使用することです。参考になる可能性のある[次のリンク](https://github.com/googledatalab/notebooks/blob/master/tutorials/BigQuery/Importing%20and%20Exporting%20Data.ipynb)の例があります。 –

+1

ありがとう@AnthoniosPartheniou! Google Cloud Storageを使用して問題が解決されるようです。 GCS(Googleのクラウドソースリポジトリを通じてノートブックを共有するチーム)で 'git'を使用できるかどうか知っていますか?私は 'gsutil rsync' [回避策](http://stackoverflow.com/questions/29859651/sync-github-repository-with-google-cloud-storage-bucket)を見つけましたが、もっと単純な解決策があるかもしれません。 –

+1

カーネルはGCPにありますが、ノートブックはローカルマシン上にあります。 Google Cloud Source Repositoryを引き続き使用できます。リポジトリをローカルマシンに複製するだけです(https://cloud.google.com/source-repositories/docs/adding-repositories-as-remotes)。あなたの 'docker run ...'コマンドで '-v" $ {HOME}:/ content "'を変更してください。'$ {HOME} 'というテキストをあなたのノートが入っているフォルダのパスに置き換えます。 Googleドライブは、チームとフォルダを共有/同期できるため、ノートブックを共有する別の方法です。私の個人的な好みは、クラウドソースリポジトリをローカルのgitクライアントで使用することです。 –

答えて

0

これは未解決の問題として表示されないように答えとして私のコメントを追加:GCPにDatalabを使用する場合

私は!hostnameがdatalabゲートウェイのホスト名を示していることが分かりました。 Datalab localセットアップを使用すると、ローカルコンテナのホスト名が表示されます。私が!lsを実行すると、Datalabのローカルセットアップを使用して、ローカルファイルにアクセスしてコンテンツフォルダを見ることができます。 GCPでDatalabを使用する際にファイルにアクセスする可能性のある回避策の1つは、Google Cloud Storageを使用することです。役に立つかもしれないfollowing linkの例があります。

1

おそらく、セルから 'git checkout'を実行することもできます。これは、原則としてあなたのtxtファイルをホストVMの中に置き、あなたのパスを調整することができます。

GPCのgitインターフェイスがバグだったので、AppAlngのデプロイされたバージョンのDatalabでこのようなハックをすべて実行しなければなりませんでした。完璧な解決策ではありません。

また、のようなCLIコールは、%%bashのセル内で使用できます。ファイルをバケットに入れて、VM内でコピーすることができますgsutil

+0

アイデア@JoseCelayaありがとう!試してみるつもりですが、再起動後に毎回Compute Engineのインスタンスストレージが再初期化されるという印象があります。すべてのシナリオを検証する必要があります... –

+0

@AlexanderUsoltsevはい、そうかもしれません。すべてのGCEリソースについて、googleは毎回それらを再配備します。実際、これはAppEngine版Cloud Datalabの問題でした。たまには、Googleは、基盤となるVMを再展開(再起動しない)し、インストールしたものはすべて消去されます。私たちがやったことは、%% bashの魔法の機能を使って、すべてのインストールコールを持つノートブックを定義することです。再デプロイ後の日に、私たちのものはうまくいかず、すべてのパッケージを再インストールするためのヒントとしてそれを取りました。 –

+0

Datalabインスタンスで使用される計算エンジンインスタンスは実際には一時的です。 Googleのクラウドトレーニングで使用されているノートブックの1つ[CPB100](https://github.com/GoogleCloudPlatform/training-data-analyst/blob/8bde4de393bfdd1d91231a27776f1962577305ed/CPB100/lab4c/mlapis.ipynb)には、ピップインストールのシステムコマンドが含まれていますノートブックからML APIを使用するGoogle API(2番目のセルを停止)。それはハッキーですが、ノートブックの魔法は今のところ最良のアプローチのようです。 – charlesreid1

関連する問題