雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

データ分析でDatabricksを利用してみた所感

これはなに?

Databricksをデータ分析で利用してみたので、備忘録のため所感をまとめてみました。
利用したのはAzure Databricksですが、AWSなど他のプラットフォーム上のDatabricksでも機能的に大きな違いはないと思います。

Databricksとは

一言で言うとデータ分析に必要な機能をオールインパッケージで提供している Spark ベースの分析プラットフォームって感じです。 データ取り込み、ETL、分析、可視化がDatabricksだけで実施できます。
ガートナーの評価でもデータサイエンスおよび機械学習プラットフォーム部門で、リーダーとして位置づけられているので世界的にも信頼できるサービスだと思います。 f:id:ykoomaru:20201011122422p:plain

構成例

クラウドプラットフォームごとの構成例です。 Databricksは各プラットフォームの分析関連機能と容易に連携できるようになっています。

Azure

f:id:ykoomaru:20201011120438p:plain

AWS

f:id:ykoomaru:20201011121119p:plain

機能紹介

幾つか実際に触ってみて気に入った機能の紹介です。

UI

Databricksでは、基本的にDatabricks Notebookという機能上でコマンドの実行を行っていくのですが、見ていただくと分かる通りJupyterNotebookやApache ZeppelinとUIが似通っています。 私はJupyterNotebookをちょくちょく触る機会があったので、直感的にすぐ利用できるようになりました。
f:id:ykoomaru:20201011092437p:plain

ショートカットも充実しているので、覚えてしまえば作業がとても楽に。
f:id:ykoomaru:20201011092940p:plain

言語

一つのDatabricks Notebook上で複数の言語が利用できます。
'%sql' のようなマジックコマンドをセルの先頭に入力し、言語を切り替えることができます。
MarkDownも利用できます。

利用できる言語

  • Python
  • SQL
  • R
  • Scala

これがすごい便利で、データ分析者によって得意な言語が異なると思うのですが、同じデータソースに対して自身が利用したい言語を選択することができます。

利用例として、Python作成したデータフレームをDatabricksでテーブル化し、SQLで読み込むなんてことができます。

f:id:ykoomaru:20201011123837p:plain

◆参考リンク
言語ガイド - Azure Databricks | Microsoft Docs

可視化

Notebookの標準機能で簡単なものであれば、様々な形式で可視化できます。
PowerBI等のBIツールまではいきませんが、素早くデータの傾向を見たりするのに便利です。

線グラフ
f:id:ykoomaru:20201011095425p:plain

棒グラフ
f:id:ykoomaru:20201011095446p:plain

SQLやDFの実行結果の下部に可視化の選択画面があり、可視化の形式を指定できます。 f:id:ykoomaru:20201011095655p:plain

Excelのピボットテーブル的な感じで、Key/Valueやグルーピングの指定ができます。
f:id:ykoomaru:20201011095927p:plain

◆参考リンク
Visualizations — Databricks Documentation

データ取り込み

CSVやJSONデータをDBFS(Databricks ファイル システム)に取り込みの方法は幾つかあるのですが、UIでの取り込みが簡単で便利でした。
CSVをアップロードするとテーブル定義をある程度自動でやってくれて、CSVにヘッダー行があれば、列名として認識してくれます。イメージとしては、AWS Glue Crawlerの機能がDatabricksに搭載されている感じで、ものすごく楽にデータ取り込みできました。

f:id:ykoomaru:20201011100903p:plain

データの概要-Azure Databricks | Microsoft Docs

コラボレーション

権限管理
ノートブックに対する権限管理ができます。 特定のユーザーに読み込み専用で共有したり、グループに対して実行を許可したりできます。WIKI的なノートを作成して、ユーザーに共有したり、サンプルコードや分析結果の共有するのに利用できそうです。

f:id:ykoomaru:20201011111616p:plain

コメント
結構便利だなと思ったのがコメント機能です。レビュー結果をノートブック自体に残せるのはいいですね。実際コードの中にコメントを残すこともできますが、コードが読みづらくなるので、このコメント機能は結構嬉しい。

f:id:ykoomaru:20201011123020p:plain

バージョニング

Databricks ノートブックではデフォルトでバージョン管理がされているため、過去のバージョンもすぐ確認することができます。
データ分析するときって、パラメータやコードを変えて何度も実行するため、バージョン管理とかしておかないと迷子になるんですよね、、、。特に設定なしで、バージョン機能があるのはとても嬉しい。
f:id:ykoomaru:20201011123244p:plain

Githubと連携することもできるようです。
GitHub version control — Databricks Documentation

ライブラリ

データ分析でPythonを利用しているのですが、PandasやNumpyなどの基本的なライブラリはすべて入っている印象でした。
Azure Databricksでしたが、AWS SDKの boto3 が普通にインポートできたので驚きました笑

もし、必要なライブラリがデフォルトでない場合でも、EGGなどからインポートできるので、基本的に必要なライブラリは揃えることができそうです。
f:id:ykoomaru:20201011115309p:plain

最後に

これ以外にもMLのモデルの作成やバッチ実行やクラスター管理等々、Databricksには様々な機能があります。データの取り込みからETL、データ分析までデータ分析、可視化をするにあたって必要な機能がすべて揃っているのは?という印象でした。データ分析者が本来注力すべきところに注力できるそんな製品だなと思いました。今後も使っていきたい。

より詳細が知りたい場合は、MSドキュメントがまとまっているのでこちらを確認してください。Databricks社のドキュメントを綺麗に日本語化してくれています。
Azure Databricks のドキュメント | Microsoft Docs