Install Java

Open a terminal and execute java. It should redirect you to a download site (if you haven’t installed it already)

Python 3

如果你透過 homebrew 安裝,或 conda 可以跳過此步驟。

Browse to https://python.org/downloads, get a 3.x version (latest is 3.12.0.). Install the pkg.

Spark/Pyspark

Go to https://spark.apache.org/downloads.html and download Spark. Use Spark 3.5.0 for Hadoop 3.3

執行以下指令,我們把 spark 移動到 /usr/local 底下,通常 /usr/local 是使用者自己手動下載的非系統預設軟體,這個folder由用戶自己管理。

1
2
3
# Untar Archive with: 
tar xfz Downloads/spark-3.5.0-bin-hadoop3.tar.gz
sudo mv spark-3.5.0-bin-hadoop3 /usr/local

然後設定環境變數,因為我是使用zsh作為shell,所以我們要設定 ~/.zshenv,如果你是使用bash,請設定 ~/.bash_profile

注意的是,如果你是使用 conda 要把 python3 改成 python 因為你要使用 conda 的 python,而不是系統預設的 python。如下:
echo 'export PYSPARK_DRIVER_PYTHON=python' >> ~/.zshenv
會這樣改是因為,homebrew 的 python 指令是 python3 而不是 python。但是 conda 的 python 指令是 python,你可以透過 conda activate 來自由切換 python 版本。因此如果輸入pyspark的時候,就會根據 PYSPARK_DRIVER_PYTHON 所指定的指令進行啟動。

1
2
3
4
# (zsh Version; for bash, use ~/.bash_profile instead of ~/.zshenv) 
echo 'export PYSPARK_DRIVER_PYTHON=python3' >> ~/.zshenv
echo 'export SPARK_HOME=/usr/local/spark-3.5.0-bin-hadoop3' >> ~/.zshenv
echo 'export PATH=${SPARK_HOME}/bin:$PATH' >> ~/.zshenv

最後嘗試啟動 Pyspark 看看

安裝必要套件

請根據你所使用的套件管理工具進行安裝,以下是兩種常見的套件管理工具。

pip

1
2
pip install notebook 
pip install findspark

conda

1
2
conda install -c conda-forge notebook
conda install -c conda-forge findspark

測試Pyspark on notebook

輸入以下指令,如果成功會看到以下畫面

1
2
3
4
5
6
7
import findspark 
findspark.init()
import pyspark # only run after findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.sql('''select 'spark' as hello ''')
df.show()

建立Spark Cluster

你也可以透過spark-3.5.0-bin-hadoop3裡面的spark-class來建立自己的cluster在本機上

1
2
3
4
5
6
# 先啟動 master node,可以指定要啟動的IP 或是不指定也可以
# The host flag ( --host) is optional.
spark-class org.apache.spark.deploy.master.Master --host <IP_Addr>

# Setup Slave Nodes
spark-class org.apache.spark.deploy.worker.Worker spark://<master_ip>:7077 --host <IP_ADDR>

Access the Spark UI through the master URL on port 8080 http://<MASTER_IP>:8080

然後在Jypyter Notebook就可以透過以下指令連接到你的cluster

1
2
3
4
5
6
import findspark 
findspark.init()

import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("spark://<master_ip>:7077").appName("APP-Name").getOrCreate()