Google Colab 上で Spark を利用する方法

## 概要

Google Colab 上で Spark を利用したい場合には、デフォルトでインストールされているため、環境構築を実施しなくても利用できるようです。pyspark のインストールのみで Spark を利用できるようになるという記事もありますが、pyspark は事前にインストール済みでした。 PySpark の基本的な動作を Google Colab 上で実行した内容を共有します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/d3108af4-7375-113f-9178-e5f83ec411c9.png)

## 検証コードと実行結果

### 1. Spark のバージョン確認

```bash
!pyspark --version
```

```text
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.5.3
      /_/
                        
Using Scala version 2.12.18, OpenJDK 64-Bit Server VM, 11.0.25
Branch HEAD
Compiled by user haejoon.lee on 2024-09-09T05:20:05Z
Revision 32232e9ed33bb16b93ad58cfde8b82e0f07c0970
Url https://github.com/apache/spark
Type --help for more information.
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/eff31171-edb3-ef02-208d-8b2d2361f054.png)

### 2. SparkSession の作成

```python
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .master("local[1]") \
    .appName("spark_on_colab") \
    .getOrCreate()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/e328d6d9-9074-85e8-cc3b-d1141106787e.png)

### 3. リストの変数から Spark Dataframe 作成

```python
from pyspark.sql import SparkSession

# SparkSessionの作成
spark = SparkSession.builder.appName("SampleDataFrame").getOrCreate()

# サンプルデータ
data = [
    ("Taro", 25, "Tokyo"),
    ("Hanako", 30, "Osaka"),
    ("Jiro", 28, "Nagoya")
]

# スキーマ（カラム名の指定）
columns = ["Name", "Age", "City"]

# データフレームの作成
df = spark.createDataFrame(data, columns)

# データフレームの表示
df.show()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/fcbe207a-e387-cb55-0030-6e70f85358f2.png)


### 4. Spark Dataframe の結果を CSV 形式で書き込み

下記のコードにより CSV 形式での書き込みを実施します。

```python
df.write.mode("overwrite").format("csv").option("header", True).save("/csv_output")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/2a94bf3f-66de-d232-cfc2-d552c90300d6.png)


指定したディレクトリにファイルが書きこまれたことを確認します。

```pyhon
import os

files = os.listdir('/csv_output')
for file in files:
    print(file)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/8966fd61-a4db-3611-fbb2-66a75db25b8b.png)


###  5. 書き込んだ CSV から Spark Dataframe を作成

```python
# データフレームの作成
df = spark.read.format("csv").option("header", True).load("/csv_output")

# データフレームの表示
df.show()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/1b78bbbc-9a2a-4d08-fc49-18143a5c0662.png)

###  6. parquet 形式で書き込み

下記のコードにより parquet 形式での書き込みを実施します。

```python
df.write.mode("overwrite").format("parquet").save("/parquet_output")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/2bb26d12-d102-601a-99ec-622d5d5efd13.png)


指定したディレクトリにファイルが書きこまれたことを確認します。

```python
import os

files = os.listdir('/parquet_output')
for file in files:
    print(file)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/ed95a4d2-b72f-bcc5-ea77-a097c48ea989.png)


###  7. SparkSession の停止

```python
spark.stop()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/6afcddc0-711c-546b-9577-a18e34d2d8fa.png)

## まとめ

この記事では、**Google Colab** 上で **PySpark** を利用する手順と基本的な操作について解説しました。Google Colab では PySpark がデフォルトでインストールされているため、環境構築の手間なくすぐに Spark を試すことができます。

検証内容では、以下の操作を確認しました：
1. **Spark のバージョン確認**  
2. **SparkSession の作成**  
3. **リストから Spark DataFrame 作成**  
4. **DataFrame を CSV 形式で書き込み**  
5. **CSV ファイルから DataFrame を再読み込み**  
6. **Parquet 形式での書き込み**  
7. **SparkSession の停止**  

Google Colab 上で PySpark を利用すれば、データ分析や処理の流れをスムーズに実行できることが確認できました。特に、ファイルの読み書き操作やフォーマット変換（CSV ↔ Parquet）も手軽に行えるため、大規模データ処理の学習や実験環境として最適です。

今後は、さらに複雑なクエリや機械学習ライブラリとの統合など、PySpark の可能性を広げる取り組みを試していくと良いでしょう。