無料である程度のGPUも使えるGoogle Colabを使えば簡易的なPysparkの動作環境を作ることも可能です。
書き方
結論、下記のコードをたたけばSparkセッションが立ち上がります。
!pip install pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder
.master("local[1]")
.appName("your app name")
.getOrCreate()
これだけだと味気ないのでspark=
以降の挙動を説明します。
.builder
メソッド:SparkSession
のビルダーオブジェクトを作成します。このビルダーオブジェクトは、Sparkセッションの設定を構築するために使用されます。
.master("local[1]")
- Sparkクラスタのマスターノードを指定しています。ここでは、”local[1]”と指定しており、ローカルモードで動作することを意味しています。”[1]”はローカルで1つのスレッドを使用することを示しています。この設定は開発やテストのために使われ、本番環境では異なる設定が必要です。
.appName("your app name")
- Sparkアプリケーションの名前を指定しています。この名前はSpark UIなどのモニタリングツールに表示されます。ここでは”IAB”という名前を指定していますが、アプリケーションに適切な名前を設定します。
.getOrCreate()
- 既存のSparkセッションが存在する場合はそれを取得し、存在しない場合は新しいセッションを作成します。このメソッドは、セッションの作成や取得を行うための最後のステップです。
これでインストールとセッションの立ち上げができたのであとは必要なモジュールやデータをインポートしたら動作できます。試しに下記コードを動作すると”name”と”age”というカラムをもった3行2列のSpark Dataframeを生成できます。
from pyspark.sql import Row
# サンプルデータからSpark Dataframeを作成
data = [Row(id=1, name="山田", age=20),
Row(id=2, name="田中", age=25),
Row(id=3, name="佐藤", age=30)]
df = spark.createDataFrame(data)
# 特定のカラムを選択して表示
selected_columns = df.select("name", "age") # "name"と"age"を選択
selected_columns.show()
SparkSessionのWorkerやExecuterを操作したい場合はconfig()
メソッドを用いて各種値を宣言します。ただ分散処理の宣言はうけられないっぽいのであまり意味はないのかも?
spark = SparkSession.builder \
.appName("your app name") \
.config("spark.executor.memory", "2g") \ # エグゼキュータのメモリ設定
.config("spark.driver.memory", "1g") \ # ドライバのメモリ設定
.config("spark.sql.shuffle.partitions", "4") \ # シャッフルパーティション数の設定
.getOrCreate()
上記はデータフレームをコード内で生成していますが、とりあえずコードを動かして挙動を確認したいという場合にはうってつけだと思います。
参考リンク

【トリビアのDelta Lake】#5 Pysparkで破産しないためにGoogle Colabにて無料で使う - Qiita
Pysparkで破産?Databricksでは、Clusterという有償のコンピューティングリソースを用いてデータソースにアクセスしたり、プログラムを動かしたりします。Clusterは従量課金制…
コメント