Cloud Datalab1は、ブラウザでpythonが実行できる便利な環境ですが、大きなデータをアップロードできない問題があります。
検証用の大きなデータをアップロードしようとしても無反応で、裏側で何が起きているのかわかりません。
アップロードする方法はいくつかあるようですが、今回は gcloud
コマンドを使用する方法について。
前提
- すでにローカルで動作する jupyter のプロジェクトがある
→ BigQueryやCloud Storageからデータを取得するコードに書き換えるのは手間…… - DatalabのWebコンソールではアップロードできない大きなファイルがある
方法
gcloud
コマンド の scp
を使用し、Datalabインスタンスに直接投げます。
(これが良い方法かどうかは不明です、Datalabのドキュメントにはこのような方法は書いていなかった。気がする。)
アップロードするファイルの準備
ファイル単体であれば問題ありませんが、複数のファイルやディレクトリをアップロードする場合は、事前にtar
などでアーカイブを作成しておくと良いです。
gcloud コマンドの設定
まずは、Datalabを使用しているプロジェクトにスイッチします。
gcloud projects list
gcloud config set core/project プロジェクトID
アップロードと展開
Datalabのディレクトリは、インスタンスにマウントされていて、直接scpではアップロードできないようです。
そのため、一旦、自分のディレクトリにアップロードした後、インスタンス内で移動させます。
gcloud compute scp --zone [zone_name] ~/my_local_directory/data.tar my_account@instance_name:/home/my_account
コマンドラインか、ブラウザのコンソールからインスタンスに入ります。
gcloud compute --project "project_name" ssh --zone "zone_name" "instance_name"
移動して展開します。移動先が大事です。
Datalabのデータはどうやら、/mnt/disks/datalab-pd/content/datalab/
にマウントされているようです。
cd ~
sudo mv data.tar /mnt/disks/datalab-pd/content/datalab/
cd /mnt/disks/datalab-pd/content/datalab/
sudo tar xzvf data.tar
以上!あってるのかわからないけど、これでできました。
-
Datalabは、GCPで提供されている クラウド jupyter 環境。pythonのインタラクティブな実行が、ブラウザで、しかもクラウドで出来るのが特徴で、GCPの各サービスとの連携も良い感じらしいです。 ↩