えんじにあのじゆうちょう

勉強したことを中心にアウトプットしていきます。

【読書】スケーラブルデータサイエンス 第6章

はじめに

今回も引き続き、スケーラブルデータサイエンスです。
今日は第6章。Dataprocです。ちなみに、第5章は個人的によく知っている話題が多かったので記事としては取り上げません。

まとめてみる

Dataproc上でJupyterNotebookの起動と接続

もともとは本に書いてあったとおりインストールスクリプトを走らせなくてはいけなかったようですが、いまはクラスタ作成時のオプションで以下を付ければ済むようでした。

--optional-components=ANACONDA,JUPYTER

あと、Jupyterを使う場合、bucketオプションを指定しておくことで作成したNotebookをGCS上に保存してくれるようになるので設定しておくとよさそうです。

   --bucket=$BUCKET \

もう1点構築オプションに関して言うとリポジトリにあったスクリプトそのままだと動作せず、regionオプションを付けないと動きませんでした。

gcloud beta dataproc clusters create \
   --region=us-west1 \
...

また、接続もいちいちトンネルとかはらないでよく、GCP上のコンソールからいけます。非常に楽です。

cloud.google.com

諸々の修正を反映した版は以下におきました。
github.com

Notebookの編集と保存

UI的にはJupyterNotebook, JupyterLabの両方が使えますのでお好きな方を選択すればいいと思います。

先程、bucketオプションを指定しましたが、そうすると、

f:id:marufeuillex:20200915101229p:plain

こんな感じで編集したものが

f:id:marufeuillex:20200915101249p:plain

こんな感じで、シームレスに保存されますので、とてもいい感じですね。

今後解消されると思いますが、2020/09/15時点でこのNotebookからBigQuery -> Pandas DataFrameをしようとすると、Apache Arrow関連で以下のような問題が起こっているようです。

to_pandas() got an unexpected keyword argument 'timestamp_as_object'

github.com

とりあえず、以下を実行しカーネルを再起動すれば動作しますのでメモとして残しておきます。

!pip install google-cloud-bigquery==1.20.0 google-cloud-bigquery-storage==0.7.0 pandas==0.25.1 pandas-gbq==0.11.0 pyarrow==0.14.1

感想

この章はこれ以外にもSparkSQLやPigでの分析について記載がありましたが、その点は特に本の通りなので割愛しました。
個人的にはさすがクラウドサービスと言ったところで使いやすいようなクラスタが簡単に作れる(そして早い)ところがとても魅力的だし、使いやすく感じました。

いままでHadoopってなんとなく面倒・・・と思っていましたが、これならサクッと使い始められますね。