Spark ConnectはApache Spark 3.4で導入されたクライアント/サーバー分離アーキテクチャです。従来のSparkアプリケーションではクライアントコードとSparkドライバーが同一JVMで動作していましたが、Spark ConnectではgRPCプロトコルを介してリモートからSparkSessionに接続できます。Databricks認定試験では、このアーキテクチャの仕組み・メリット・制約事項が出題されます。
Spark Connectは、クライアント側でDataFrame APIの論理プランを構築し、gRPCでサーバー側に送信する仕組みです。サーバー側はその論理プランを最適化・物理プランに変換してSparkクラスタ上で実行し、結果をgRPCでクライアントに返します。
┌─────────────────────────┐ gRPC ┌──────────────────────────────┐
│ クライアント (IDE等) │ ──────────► │ Spark Connect サーバー │
│ │ │ │
│ PySpark / Scala Client │ ◄────────── │ SparkSession │
│ DataFrame API │ 結果返却 │ ├─ Catalyst Optimizer │
│ Spark SQL API │ │ ├─ Physical Planner │
│ │ │ └─ Spark Executors │
└─────────────────────────┘ └──────────────────────────────┘
ローカルPC リモートクラスタ従来のアーキテクチャではクライアントJVMがドライバーとして動作し、Executorと直接RPC通信していました。Spark ConnectではクライアントJVMがドライバーから完全に分離されるため、クライアント側のクラッシュがSparkジョブに影響しません。
| 項目 | Spark Connect | Databricks Connect v2 |
|---|---|---|
| 提供元 | Apache Spark OSS | Databricks |
| プロトコル | gRPC | gRPC(Spark Connectベース) |
| 接続先 | 任意のSpark Connectサーバー | Databricksクラスタ / Serverless |
| 認証 | 独自実装が必要 | PAT / OAuth / Azure AD統合 |
| Unity Catalog | 非対応 | 対応(テーブルACL含む) |
| Serverless接続 | 非対応 | 対応(DBR 15.x+) |
| インストール | pyspark[connect] | databricks-connect |
| 最小ランタイム | Spark 3.4 | DBR 13.0 |
# Spark Connectサーバーの起動
./sbin/start-connect-server.sh \
--packages org.apache.spark:spark-connect_2.12:3.5.0
# Pythonクライアントからの接続
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.remote("sc://spark-server-host:15002") \
.getOrCreate()
df = spark.sql("SELECT 1 AS test")
df.show()# インストール
pip install databricks-connect==15.4.*
# Pythonクライアントからの接続
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder \
.host("https://adb-xxxx.azuredatabricks.net") \
.token("dapi...") \
.clusterId("0123-456789-abcdefgh") \
.getOrCreate()
# Unity Catalogのテーブルにアクセス
df = spark.table("my_catalog.my_schema.customers")
df.filter(df.region == "APAC").show()
# DataFrameをローカルのPandasに変換
pdf = df.toPandas()Spark Connectはクライアント/サーバー間でgRPCの論理プランのみを転送するため、以下の操作はサポートされません。
| 制約 | 理由 | 代替手段 |
|---|---|---|
| RDD APIの直接使用 | RDDはCatalyst論理プランに変換できない | DataFrame APIに書き換え |
| カスタムAccumulator | クライアント側のJVMオブジェクトをシリアライズ不可 | DataFrame集約関数で代替 |
| SparkContext直接アクセス | SparkContextはサーバー側にのみ存在 | SparkSession APIを使用 |
| カスタムPartitioner | RDD操作に依存するため | repartition / coalesceで代替 |
| 任意のJVM関数のブロードキャスト | クライアントJVMがサーバーから分離 | UDF登録で対応 |
Spark Connect - 制約事項
問題 1
開発者がSpark Connectを使用してリモートクラスタに接続し、以下の処理を実行しようとしています。Spark Connectでサポートされていない操作はどれですか?
正解: C
Spark ConnectではsparkContext.parallelize()やRDD操作(map, flatMap, reduce等)は使用できません。Spark Connectのクライアントは論理プランをgRPCで送信する設計であり、RDDはCatalystの論理プラン表現に変換できないためです。選択肢A・B・DはすべてDataFrame API / Spark SQL APIの操作であり、Spark Connectでサポートされています。
Spark ConnectでRDD APIを使用できますか?
いいえ、Spark ConnectではRDD APIを直接使用できません。Spark ConnectのクライアントはDataFrame APIとSpark SQL APIのみをサポートしており、RDD操作はgRPCプロトコルを通じてシリアライズできない設計です。RDD操作が必要な場合は、従来のドライバー直接接続方式を使用するか、UDF内にロジックをカプセル化する回避策があります。試験ではこの制約が頻出の出題ポイントです。
Spark ConnectとDatabricks Connectの違いは何ですか?
Spark ConnectはApache Sparkのオープンソースプロジェクトとして提供されるクライアント/サーバー分離アーキテクチャです。Databricks ConnectはSpark Connectプロトコルをベースに、Databricksワークスペースへの認証・Unity Catalog統合・Serverless Compute接続などDatabricks固有の機能を追加した実装です。Databricks Connect v2(DBR 13.0以降)は内部的にSpark Connectプロトコルを使用しています。
Spark Connectのクライアントはどの言語で利用できますか?
Spark Connectクライアントは公式にPython(PySpark)・Scala・Javaをサポートしています。gRPCプロトコルベースであるため、理論的にはgRPCクライアントを実装できるあらゆる言語から接続可能ですが、実運用ではPySparkが最も広く使われています。Databricks Connectではさらにサードパーティ製のR・Go用クライアントも存在します。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...