PySpark, the Python interface to Apache Spark, can be run directly inside a Jupyter Notebook, which gives you Spark’s distributed processing alongside Jupyter’s interactive, cell by cell way of writing and documenting code. On Windows specifically, there are a couple of extra pieces needed beyond a plain pip install, and this is where most setup guides, including the previous version of this page, tend to stop short.
Click the Windows Start button, or press the Windows key, and type cmd to open Command Prompt.

From Command Prompt, install both PySpark and Jupyter using pip:
pip install pyspark
pip install jupyter
This installs Spark itself as a Python package, so you do not need to separately download and extract a Spark archive for typical local use.
Jupyter does not automatically know where PySpark is installed unless you tell it. The findspark library bridges that gap, making pyspark importable as a normal library inside a notebook.
pip install findspark
This is the step most Windows specific guides skip past too quickly, and the one this page never reached at all. Spark relies on a small set of Hadoop utilities, collectively called winutils, to handle file system permissions the way Hadoop expects, even when you are only running Spark locally with no actual Hadoop cluster involved. Without it, certain operations will fail with a file system related error.
Search for environment variables in the Windows search box, open Edit the system environment variables, and set the following under System variables:
Add both of these to your Path variable as well, then restart Command Prompt, or restart your computer if changes do not seem to take effect, which is common with environment variable updates on Windows.
From Command Prompt, start Jupyter Notebook:
jupyter notebook
In a new notebook cell, initialize findspark before importing pyspark, then create a Spark session:
import findspark
findspark.init()
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName(“JupyterSparkTest”).getOrCreate()
data = [(“Java”, “17”), (“Python”, “3.12”), (“Spark”, “3.5”)]
df = spark.createDataFrame(data, [“Language”, “Version”])
df.show()
If this cell runs without error and prints a small table of the three rows above, Spark is running correctly inside your notebook.
That covers getting PySpark running inside Jupyter Notebook on Windows from start to finish. To go further, explore Prwatech’s Apache Spark training program, which includes placement assistance.