Apache Spark 4 نسل جدید پردازش توزیعشده و موتور محبوب داده است که با قابلیتهایی مانند Catalyst 3.0، پشتیبانی از Python 3.12، Spark Connect، بهبود Row-Oriented Execution و سازگاری بیشتر با Lakehouse وارد عصر تازهای شده است.
اگر میخواهید یادگیری اسپارک را از پایه و بهصورت عملی آغاز کنید، بهترین نقطه شروع این است که اسپارک را روی لپتاپ خود نصب و آن را با PySpark + Jupyter Notebook اجرا کنید.
در این مقاله، قدمبهقدم فرآیند زیر را پوشش میدهیم:
این آموزش مناسب محیطهای زیر است:
در هر سه پلتفرم، فرایند نصب یکسان است و تنها دستورات تفاوتهایی جزئی دارند.
دقت کنید که اگر بر روی ویندوز قصت نصب و راه اندازی اسپارک را دارید، ابتدا WSL را راه اندازی و سپس یک توزیع مناسب از لینوکس مانند Ubuntu 24 بر روی آن نصب کنید. (مطابق فیلم آموزشی این بخش)
Spark 4 با JDK 21 بهترین سازگاری را دارد.
sudo apt update
sudo apt install openjdk-21-jdk -y
java --version
brew install openjdk@21
echo 'export PATH="/opt/homebrew/opt/openjdk@21/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
java --version
UV یک package manager بسیار سریع و مدرن است.
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.12
uv python list
به صفحه دانلود آپاچی اسپارک بروید و نسخه ۴.x را دانلود کنید.
در WSL یا Linux:
cd ~
mkdir spark
cd spark
wget https://archive.apache.org/dist/spark/spark-4.0.1/spark-4.0.1-bin-hadoop3.tgz
tar xzvf spark-4.0.1-bin-hadoop3.tgz
mv spark-4.0.1-bin-hadoop3/* .
در ~/.bashrc یا ~/.zshrc:
export SPARK_HOME=$HOME/spark
export PATH=$SPARK_HOME/bin:$PATH
export PATH=$SPARK_HOME/sbin:$PATH
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=python3
سپس:
source ~/.bashrc
cd ~
mkdir spark-workspace
cd spark-workspace
uv init --python 3.12
uv add pyspark notebook findspark pandas numpy matplotlib
اگرچه میتوان اسپارک را در حالت local mode اجرا کرد، اما توصیه میشود یک کلستر کوچک standalone روی لپتاپ بسازید تا رفتار واقعی اسپارک را مشاهده کنید.
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
nano $SPARK_HOME/conf/spark-env.sh
و اضافه کنید:
export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=2
export SPARK_WORKER_MEMORY=1G
$SPARK_HOME/sbin/start-master.sh --webui-port 8080
Master UI:
http://localhost:8080
$SPARK_HOME/sbin/start-worker.sh spark://localhost:7077
cd ~/spark-workspace
source .venv/bin/activate
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
jupyter notebook
Notebook در مسیر زیر باز میشود:
http://localhost:8888
import findspark
findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Spark Workshop") \
.master("local[*]") \
.config("spark.driver.memory", "2g") \
.getOrCreate()
spark
rdd = spark.sparkContext.parallelize(range(100))
rdd.filter(lambda x: x % 3 == 0).take(10)
df = spark.createDataFrame([
(۱, "Alice", 28),
(۲, "Bob", 35),
(۳, "Charlie", 42)
], ["id", "name", "age"])
df.filter(df.age > 30).show()
df.createOrReplaceTempView("people")
spark.sql("SELECT * FROM people WHERE age > 30").show()
$SPARK_HOME/sbin/stop-master.sh
$SPARK_HOME/sbin/stop-worker.sh
$SPARK_HOME/sbin/stop-all.sh
در Jupyter:
import os, sys
os.environ['PYSPARK_PYTHON'] = sys.executable
os.environ['PYSPARK_DRIVER_PYTHON'] = sys.executable
lsof -i :8080
kill -9 <PID>
sudo apt install openjdk-21-jdk
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
اکنون شما:
این دقیقاً اولین قدم مهم برای یادگیری اسپارک و ورود به دنیای پردازش داده در مقیاس بزرگ است.
ویدئوی کامل این بخش (نصب و راهاندازی اسپارک ۴ و اجرای Jupyter با PySpark) در همین قسمت زیر قابل مشاهده است.
⚠️ نکته: اگر ویدئو در قسمت زیر برای شما بارگذاری یا نمایش داده نمیشود، ابتدا مطمئن شوید که با آیپی ایران صفحه را مشاهده میکنید (فیلترشکن خاموش باشد) و در صورت نیاز، یک اینترنت پروایدر دیگر را امتحان کنید.