クイックスタート: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」をご覧ください。