LoginSignup
2
2

More than 1 year has passed since last update.

Databricks Connect: アプリケーション、マイクロサービスにApache Spark™の機能を

Last updated at Posted at 2021-08-01

Databricks Connect: Bringing the capabilities of hosted Apache Spark™ to applications and microservices - The Databricks Blogの翻訳です。

この記事では、あらゆるノートブックIDEやカスタムアプリケーションからネイティブのApache Spark APIを利用できる新たなライブラリであるDatabricks Connectをご紹介します。

概要

過去数年にわたって、Apache Spark向けに多くのカスタムアプリケーションコネクターが開発されました。これには、spark-submitやRESTジョブサーバー、ノートブックゲートウェイなどのツールが含まれます。これらには以下のような制限がありました。

  • これらは様々なケースに対応できるものではありませんでした:多くは特定のIDEやノートブック向けのものでした。
  • お使いのアプリケーションをSparkクラスターで実行する必要がありました。
  • Sparkの上に別のプログラミングインタフェースを統合する必要がありました。
  • クラスターを再起動することなしに、ライブラリの依存関係を変更することができませんでした。

これを、単純にライブラリウィインポートしてサーバーにアクセスする、SQLデータベースサービスへの接続方法を比較してみましょう。

Python
import pymysql
conn = pymysql.connect(<connection_conf>)
conn.execute("SELECT date, product FROM sales")

Sparkの構造化データAPIで同様のことを行う場合には、以下のようになります。

Python
from pyspark.sql import SparkSession
spark = SparkSession.builder.config(<connection_conf>).getOrCreate()
spark.table("sales").selectExpr("date", "product").show()

しかし、Databricks Connect以前では、上記のスニペットはシングルノードのSparkクラスターでのみ動作し、複数ノードへの容易なスケーリングや、spark-submitのような追加のツールなしにはクラウドにスケーリングすることができませんでした。

Databricks Connectクライアント

Databricks Connectは普遍的なSparkライブラリを提供することで、このSparkコネクターのストーリーを完結させます。これによって、ノートブックのアプリケーション (例:Jupyter、Zeppelin、CoLab)、IDE(例:Eclipse、PyCharm、Intellij、RStudio)、カスタムのPython / JavaアプリケーションからSparkジョブを実行できます。

このことは、あなたはどこからでも"import pyspark"や"import org.apache.spark"を実行でき、Databricksクラスターに対してシームレスに大規模ジョブを実行できることを意味します。例として、Databricks Connectを用いてCoLabノートブックからSparkジョブをリモートで実行する様子をお見せします。ここでは、アプリケーション固有のインテグレーションが不要であることに注意してください。単にdatabricks-connectライブラリをインストールしてインポートするだけです。また、ここではGCPからS3のデータセットを読み込んでいますが、SparkクラスターがAWSにホストされているので実現可能となっています。

Databricks Connectから起動されたジョブは、分散処理を活用し、Databricks Spark UIでモニタリングできるように、リモートでDatabricksクラスター上で実行されます。

カスタマーユースケース

現時点(2019/6)で数百以上のお客様がアクティブにDatabricks Connectを利用しています。特筆すべきユースケースには以下のようなものがあります。

開発およびCI/CD

  • Databricksクラスターを利用しつつも、ローカルのIDEでコードをデバッグ。
  • 運用環境におけるCI/CDパイプラインにおいて、Sparkアプリケーションをテスト。

インタラクティブな分析

  • 慣れ親しんでいるシェル(Jupyter、bash)やスタジオ環境(RStudio)を使いつつも、Databricksクラスターで処理を行えるように、多くのユーザーがDatabricks Connectを活用。

アプリケーション開発

  • ヘルスケア業界の大手のお客様は、インタラクティブなユーザークエリーを提供するPythonベースのマイクロサービスをデプロイするためにDatabricks Connectを使用。クエリーサービスは、1日あたり数千のクエリーに対応するために、リモートで複数のDatabricksクラスター上でSparkジョブを実行、このためにDatabricks Connectライブラリを使用。

Databricks Connectの動作原理

普遍的なクライアントライブラリを作るためには、以下の要件を満たす必要がありました。

  1. アプリケーション観点では、クライアントライブラリは完全なSparkとして動作(例:SQL、データフレームなどを利用できること)する必要があります。
  2. 物理計画や実行などのヘビーウェイトなオペレーションはクラウド上のサーバーで実行されるべきです。さもないと、クライアントがクラスターに近い場所になく、広域ネットワーク越しにデータを読み込む際に多大なるオーバーヘッドを引き起こすことになります。

これらの要件に適合するために、アプリケーションがSpark APIを利用する際には、Databricks Connectライブラリは、Sparkと全く同じように分析フェーズに至るジョブの計画を実行します(要件1)。ジョブの実行準備が整った際には、Databricks Connectは論理的クエリープランを、実際の物理的処理実行とIOが発生するサーバーに送信します(要件2)。

図1. Databricks ConnectはSparkジョブのライフタイムを、論理的分析までを含むクライアントフェーズ、リモートクラスターにおける処理実行を含むサーバーフェーズに分割します。

Databricks Connectクライアントは、様々なユースケースに対応できるように設計されています。プラットフォームのAPIトークンを通じて分かりやすい認証、承認ができるように、REST経由でサーバーと通信を行います。セキュアかつ同時実行性の高い共有クラスターにおいても、複数ユーザーのセッションは分離されます。高いパフォーマンスを実現するために結果は効率的なバイナリーフォーマットで返却されます。使用されるプロトコルはステートレスなので、対障害性のあるアプリケーションを容易に構築でき、クラスターが再起動されたとしても作業状態を失うことはありません。

利用方法

Databricks ConnectはDBR 5.4のリリースからGAとなっており、Python、Scala、Java、Rをサポートしています。"pip install databricks-connect"を実行することで、すべての言語に対するライブラリをPyPIから取得できます。Databricks Connectのドキュメントにはこちらからアクセスできます。

Databricks 無料トライアル

Databricks 無料トライアル

2
2
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
2