クイックスタート:Spark Connect#

Spark Connect は、Spark のクライアント・サーバーアーキテクチャを分離し、DataFrame API を使用して Spark クラスターへのリモート接続を可能にします。

このノートブックでは、Spark Connect を使用して、データ操作時に Spark のパワーを活用する必要のあるあらゆる種類のアプリケーションを構築するための、簡単なステップバイステップの例を説明します。

Spark Connect にはクライアントとサーバーの両方のコンポーネントが含まれており、両方のセットアップと使用方法を説明します。

Spark Connect で Spark サーバーを起動する#

Spark Connect セッションをサポートするために Spark を起動するには、start-connect-server.sh スクリプトを実行します。

[1]:
%%bash
source ~/.profile # Make sure environment variables are loaded.
$HOME/sbin/start-connect-server.sh

Spark Connect サーバーに接続する#

Spark サーバーが実行されたので、Spark Connect を使用してリモートで接続できます。これは、アプリケーションが実行されているクライアントでリモート Spark セッションを作成することによって行われます。その前に、既存の通常の Spark セッションを停止する必要があります。なぜなら、これから作成するリモート Spark Connect セッションとは共存できないからです。

[2]:
from pyspark.sql import SparkSession

SparkSession.builder.master("local[*]").getOrCreate().stop()

上記でサーバーを起動するために使用したコマンドは、Spark を localhost:15002 として実行するように設定しました。したがって、次のコマンドを使用してクライアントでリモート Spark セッションを作成できます。

[3]:
spark = SparkSession.builder.remote("sc://:15002").getOrCreate()

DataFrame を作成する#

リモート Spark セッションが正常に作成されると、通常の Spark セッションと同じように使用できます。したがって、次のコマンドで DataFrame を作成できます。

[4]:
from datetime import datetime, date
from pyspark.sql import Row

df = spark.createDataFrame([
    Row(a=1, b=2., c='string1', d=date(2000, 1, 1), e=datetime(2000, 1, 1, 12, 0)),
    Row(a=2, b=3., c='string2', d=date(2000, 2, 1), e=datetime(2000, 1, 2, 12, 0)),
    Row(a=4, b=5., c='string3', d=date(2000, 3, 1), e=datetime(2000, 1, 3, 12, 0))
])
df.show()
+---+---+-------+----------+-------------------+
|  a|  b|      c|         d|                  e|
+---+---+-------+----------+-------------------+
|  1|2.0|string1|2000-01-01|2000-01-01 12:00:00|
|  2|3.0|string2|2000-02-01|2000-01-02 12:00:00|
|  4|5.0|string3|2000-03-01|2000-01-03 12:00:00|
+---+---+-------+----------+-------------------+

DataFrame API の詳細については、クイックスタートページの「ライブノートブック:DataFrame」をご覧ください。