2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Databricksについて端的にまとめると、、

Last updated at Posted at 2020-06-16

Azure Databricksは高速で処理できる、Apache Spackベースの分析プラットフォームです。
様々なデータソースからデータを読み取って、Sparkで変換や分析ができます。
Sparkクラスターは自動スケーリングの設定や、一定時間アイドル状態だと終了するといった設定もでき、無駄なコストも省けます。

##クラスターとは・・・
Notebook とジョブを実行するための計算リソースと構成のセットです。

##Apache Sparkとは・・・
莫大なデータに対して分散処理をおこなうオープンソースのフレームワークで、大規模な分析ソリューションでは必ず検討されています。

分散処理でいうとHadoopがありますすが、もちろんSparkとの違いがあります。

フレームワーク 言語 処理方法
Spark Scala メモリにデータ保存(インメモリ)
Hadoop Java 入出力のたびにストレージアクセス(MapResuce)

Sparkはインメモリなので高速に処理できるので頻繁に入出力が発生する場合に力を発揮します。

##使いどころ
Azureソリューションは大きく分けて4つのフェーズに分かれますが、

  • 取込み
  • 保管
  • 準備とトレーニング
  • モデル化と提供

Databricksは「準備とトレーニング」フェーズで登場します。
データを抽出(Extract)して変換(Transform)して格納(Load)します。
俗に言う「ETL」です。
※DatabricksはETLの類になります。

##コンポーネント

  • Spack SQL + DataFrames

    構造化データを処理するSpark SQLと、分散型コレクションのデータフレームです。
  • Streaming

    リアルタイムのデータ処理と分析です。
  • MLlib

    Machine Learningライブラリです。
  • GraphX

    グラフおよびグラフ計算です。
  • Spack Core API

    下記の言語をサポートしています。
    • R
    • SQL
    • Python
    • Scala
    • Java

私はPythonを少し触れるのでPythonで書けるのは良いなーと思っていますが、処理速度が遅いことが課題に挙がっているようです。
※Scalaのほうが約10倍ほど速いそうです。

もともとSparkはScalaで書かれているので、Scalaを使うべきなのか悩みどころです。
サイエンティストはライブラリの豊富さからもPythonに馴染みがある人が多いと思いますが、実際のところPythonとScala、どっちを使うべきなんでしょう?

速度の観点からいうとScalaのほうが良さそうですが、扱いやすさだとPythonのほうが強そうです。(PySparkの登場でPythonもSparkにおいて盛り上がっているようです)

##良さそうなところ
Databricksには対話式で実行できるNotebookがあります。(jupyter notebookのようなもの)
このNotebookの特徴は複数の言語を使えるところだと思います。
「%scala」って頭に書けばScalaでコードが書けます。

私はPythonで形態素解析して文章の特徴を調べたりして遊んでいますが、もちろんすべてPythonで書いています。
データ量も大したことないので遅さに不満を感じていませんが、これがとてつもないデータ量だとしたらきっとストレスに感じてしまうかもしれません。

上で述べたとおり、分析に関して言えばPythonだと思いますが、処理速度はScalaが優勢です。

こんな時、たとえば形態素解析だけScalaに任すことができれば、形態素解析処理時間が短縮されて、結果、全体の処理時間も大幅に短縮できるかもしれません。

Notebookで作成した予測モデルをバッチスクリプトとして定期実行させることができるのも大変魅力的です。
しかも、Sparkクラスターのスペックなども設定できるので、処理実行時間に縛りがある場合などは高性能のSparkクラスターを設定して利用すれば実現できそうです。

ほかにも沢山の機能があり一度では伝えきれないので、また投稿しようと思います。

##実際にDatabricksを使用してみました(Scala編)
下記に、Databricksの作成からデータウェアハウスへの格納までの手順を備忘録としてまとめました。
【備忘録】Azure Databricksを使ってDataWarehouseにデータを書き出してみる

##参考
Azure Databricks のドキュメント

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?