こんばんは。今回は、Azure Databricksについて知ったことをこの記事にまとめていきたいと思います。
前回は、全体感を掴むことを目的とした記事でしたが、今回は、実際にサービスを使ってみることにフォーカスしていきたいと思います。
それではまいります。
Contents
Azure Databricksでデータ分析・機械学習
まず、リソースの作成と、クラスターの準備です。まいります。
リソースの作成
Azure DatabricksはAzure Marketplaceから作成できます。「Databricks」と検索すると出てくるかと思います。
リソースの作成では、ワークスペース名、リージョン、SKUを指定します。
よりセキュアにデプロイするためのネットワークオプションも指定可能です。
デプロイは、ほんの数分程度で完了しました!リソースのUIは以下。Azure Machine LearningやCognitive Serviceなどと同様、ここからワークスペースを起動して利用する形式のようですね。
「ワークスペースの起動」に進むとAzureらしからぬ画面(DatabricksのUIと同じなのかな・・?)に遷移しました。
まず困ったのが、ワークスペースが”Data Science & Engineering”と”Machine Learning”で切り替えられるようになっていること。(SQLはありませんでした、たぶん価格プランによっては使えないのかな・・?)
あーよくみると、使える機能が微妙に違うようです。上がData Science。下がML。Notebookは共通ですが、Machine Learningの方ではAutoMLなどの機械学習系機能が使えて、Data Scienceの方ではData Import機能が使える模様。(私が思想を理解できていないだけかもしれないですが、なぜ切り替えないといけないのか謎ではあります・・)
クラスターの作成
次にクラスターの作成です。実際の分析や、機械学習はこのクラスター上で行われますので、とにもかくにもクラスターを作成しておかないといけないのです。
このクラスターはMachine LearningでもData Scienceで共通のようなので、どちらで作成してもよさそうです。
「Create Cluster」に進みます。
Clusterの設定では、Databricksランタイムバージョンやスケーリング、自動停止の設定などが行えます。
さらに、Advanced Optionsとして、SparkのCongigもいじれたりするようですね。
いざ、作成!おお、ここはさすが売りにしているだけあって、本当に一瞬で完了しました。
Notebookの作成
さて、それでは使ってみます。まずは、よくありそうな、Notebookを使ったアドホック分析・機械学習。
とりあえず、Machine LearningのNotebookを起動してみます。
Notebookの言語は、Python/R/Scalaに加えてSQLが選べます。
Noteが立ち上がりました!
データセットの作成
今回は、タイタニックのデータを使ってみます。なお、データはKaggleで公開されているものを利用します。
https://www.kaggle.com/c/titanic/data
さて、このデータをDatabricks上のNotebookから読み込める場所に配置せねばなりません。「Ingest data」に進みます。
するとCreate New Tableというタイトルで、いくつかの方法でデータの入力できる画面にうつりました。今回は、csvファイルをアップロードする形をとりました。
なお、csvをそのまま格納して、Notebook上でcsvを読み込む方法もありそうでしたので、リンクだけはっておきます。
https://docs.microsoft.com/ja-jp/azure/databricks/data/data
ここから「Create Table with UI」に進むと、クラスターの選択と、テーブルプレビューの確認ができるようになります。このままテーブルの作成を完了します。
*下のキャプチャのように、ヘッダが認識されていない場合には、「First row is header」チェックボックスにチェックをいれればOK。
さて、次は作成したテーブルのデータをNotebook上に読みだしてくる必要があります。
こちらの公式ドキュメントを参考にします。
https://docs.microsoft.com/ja-jp/azure/databricks/data/tables#access-a-table
以下のように、spark.sql()構文を使うことでテーブルデータの取得ができました!
Notebook上の実装
あとは実装していくだけです。が、今回は割愛。(というのも、そういえばDatabricksはSparkベースなので、Python実装のコードがそのまま動かないパターンが散見され、修正にちょっと時間がかかりそうだったので・・・スミマセン笑)
ちなみに、追加のライブラリをインストールする必要があるときは、以下にまとめた方法からインストールできます。
その他の機能
少々乱雑なくくり方ですが、その他の機能についてもみておきます。
ジョブ機能
Azure Databricksでは、ジョブを組むことができます。この機能を使うことで、ETL処理などを自動化することができます。
https://docs.microsoft.com/ja-jp/azure/databricks/jobs
実際に試してみましょう。Jobs > Create Jobと進みます。
ジョブは、複数のタスクから構成されます。ジョブ作成画面では、ジョブの名称と、ジョブが含むタスクの追加が行えます。
タスクでは、既存のNotebookを実行したり、jarファイルやpythonコードを指定することができます。
こんな感じでタスクをどんどん追加していくことができます。また、各タスクの実行スケジュールを定義することもできます。
リポジトリ連携
Azure Databricksでは、リモートリポジトリとの連携もできます。機能概要ページの公式Docはなぜかまだ日本語されていない模様・・・いちおうはっておきます
https://docs.microsoft.com/ja-jp/azure/databricks/repos/
この機能を使うことで、作成したNotebookなどをその場でリモートリポジトリにCommitしたりできるようです。
https://docs.microsoft.com/ja-jp/azure/databricks/notebooks/github-version-control
以上、Azure Databricksを使ってみたメモでした。まだまだDatabricksを使うユースケースはあると思いますが、ぶちあたるたび順次更新していきたいと思います。
今日はいったんここまで。最後までご覧いただきありがとうございました!
おしまい
コメントを残す