Apache Spark se puede ejecutar en Hadoop, Mesos, en la nube o como una aplicación independiente. En este artículo voy a explicar de una manera simple, cómo Instalar Apache Spark en Windows 10 como aplicación independiente. Para ello vamos a utilizar los binarios precompilados mediante despliegue XCOPY.
Solo vamos a precisar adicionalmente un descompresor como 7-Zip y un editor de textos.
Muchos de los artículos que encontramos en la web y que explican cómo se instala Apache Spark, indican que es necesario instalar algunas herramientas como Gnu on windows (GOW) o inclusive el lenguaje Scala. Veremos qué no son necesarias para que funcione correctamente si instalamos Apache Spark desde los binarios precompilados.
¿Qué es Apache Spark?
Apache Spark es un framework open-source de computación en clúster utilizado en Big Data. Fue desarrollado en el AMPLab de Berkeley en la Universidad de California. Proporciona principalmente una interfaz para la programación con paralelismo de datos (implícito) y tolerancia a fallos. Se puede considerar que es un sistema de computación en clúster de propósito general y orientado a la velocidad.
Apache Spark está creciendo como motor general para el procesamiento de datos a gran escala porque es capaz de ejecutar programas hasta 100 veces más rápido que Hadoop MapReduce, gracias a sus capacidades de computación en memoria.
Se pueden escribir aplicaciones Spark muy fácilmente utilizando los lenguajes Java, Python, Scala y R mediante las APIs disponibles. También tiene un gran conjunto de herramientas de alto nivel entre las que se destacan:
- Spark SQL para el procesamiento de datos estructurados usando lenguaje SQL
- MLlib para implementar machine learning
- GraphX para el procesamirnto de grafos
- Spark Streaming para procesar secuencias, lo que le permite escribir trabajos de flujo (streaming) de la misma forma que escribe trabajos por lotes (batch)
Requerimientos para instalar Apache Spark
Es fácil de ejecutar Spark localmente en una máquina sin un cluster distribuido. Lo que se necesita es tener java instalado y disponible en el PATH. También es necesario que la variable de entorno JAVA_HOME apunte correctamente a la carpeta de instalación de Java. Pero dado que vamos a estar usando también Python vamos a instalarlo previamente usando la distribución disponible en Anaconda.
Según la documentación disponible en el sitio, Apache Spark funciona con Java 8+, Python 2.7 + / 3.4 + y R 3.1+. Para la API de Scala, Spark 2.3.1 usa Scala 2.11. Necesitará usar una versión de Scala compatible (2.11.x).
Instalación de Anaconda
Es preferible antes de comenzar a instalar Apache Spark instalar la última versión de Anaconda que nos provee un entorno completo para realizar ciencia de datos en Python y R. Anaconda nos provee más de 1,400 paquetes de ciencia de datos y nos permite administrar los paquetes, dependencias y entornos fácilmente.
https://www.anaconda.com/download
En mi caso dado que estoy en una maquina Windows 10 64 bits, descargo el instalador de la versión de Python 3.6 desde el link anterior. Después de ejecutar el instalador, seleccionar la carpeta de instalación y seguir las instrucciones del asistente, se completa la instalación muy fácilmente. La carpeta donde se ha instalado será utilizada más adelante por lo que es recomendable anotar la ubicación donde se ha realizado la instalación para no tener que buscarla luego.
Creación de las carpetas necesarias
Se debe tener en cuenta que existen algunas limitaciones con respecto al nombre de la carpeta de instalación de java. Por ejemplo, no puede contener espacios. En mi caso y por simplicidad voy a usar la carpeta c:\Spark. Luego voy a crear las subcarpetas necesarias no sólo para instalar Apache Spark, sino también para instalar una versión de java que será usada exclusivamente por Spark (sin que entre en conflicto con la que pudiera estar instalada en el sistema).
c: cd \ md Spark cd Spark md java md tmp</pre>
Instalación de Java
Luego de aceptar el acuerdo de licencia descargamos la versión Windows X64 de Server JRE (Java SE Runtime Environment) 8 desde la siguiente URL:
http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html
Una vez descargada podemos extraer los archivos a la carpeta “C:\Spark\java” (previamente creada) utilizando por ejemplo el 7-Zip. Con esto completamos la instalación de los archivos de Java. Solo queda configurar las variables del entorno para poder usar esta instalación lo que haremos en un archivo más adelante.
Instalación de Apache Spark
Al igual que con java, sólo necesitamos descargar el archivo correcto y descomprimirlo en la carpeta “C:\Spark” que creamos previamente, utilizando por ejemplo el 7-Zip. En mi caso yo utilicé en la versión 2.3.1 que ya está preconstruida para ejecutar hadoop 2.7+ tal como muestra la imagen.
https://spark.apache.org/downloads.html
Downloads Apache SparkCon esto completamos la instalación de los archivos de Spark.
Instalación del binario de Hadoop
En este caso también es sencillo realizar la instalación ya que sólo necesitamos descargar el archivo winutils.exe y copiarlo dentro de la carpeta “c:\Spark\bin” que debería estar creada desde el paso anterior cuando se realizó la instalación de spark. En mi caso yo descargué y utilicé “hadoop-3.0.0”.
https://github.com/steveloughran/winutils
Nota: Las versiones que se descargan de este repositorio son de 64 bits
Creación del archivo SparkCmd.BAT
Como ya tenemos todos los componentes necesarios instalados en la máquina, sólo resta crear un par de archivos para simplificar la manera en que iniciamos Apache Spark de forma tal que pueda acceder a todos los componentes necesarios. Para ello vamos a configurar el entorno de manera temporal mientras se ejecuta Apache Spark sin afectar a nuestro sistema el cual quedará perfectamente limpio.
Creamos el archive SparkCmd.bat en “C:\Spark\” y lo abrimos con un editor de textos para agregarle el siguiente contenido:
@ECHO OFF REM ------------------------------------------------------------------ REM Activa Anaconda REM ------------------------------------------------------------------ call C:\Users\Mariano\Anaconda3\Scripts\activate.bat C:\Users\Mariano\Anaconda3 REM ------------------------------------------------------------------ REM Java + SPARK REM ------------------------------------------------------------------ SET path=c:\Spark\bin\;c:\Spark\java\bin\;%path% set JAVA_HOME=c:\Spark\java set SPARK_HOME=c:\Spark set HADOOP_HOME=c:\Spark SET TEMP=c:\Spark\tmp @echo ------------------------------------------------------------------ @echo Spark command promt @echo ------------------------------------------------------------------
Como puede verse lo primero que se realiza en el código es la activación del entorno de Anaconda. En mi caso yo utilicé en la carpeta ”C:\Users\Mariano\Anaconda3” para instalar Anaconda por lo que ustedes deberán modificar esta línea de acuerdo a la ubicación en la cual han instalado Anaconda.
Las siguientes líneas de código modifican o agregan las variables del entorno JAVA_HOME, SPARK_HOME y HADOOP_HOME para que tanto spark como java utilicen las carpetas en las cuales se han instalado estos componentes. Esta modificación es temporal y se mantendrá en la línea de comandos hasta que la misma sea cerrada.
Creación del acceso directo
Solo resta crear un acceso directo y agregarle la siguiente línea de código como puede verse en la imagen.
%comspec% /k “” C:\Spark\ SparkCmd.bat “”

PropiedadesSparkCmd
Probando Spark con PySpark
Para probar que Apache Spark está funcionando correctamente vamos a utilizar el comando PySpark (desde el shell que creamos y usando el acceso directo creado anteriormente). Una vez credo el shell al ejecutar PySpark se nos abre una consola de Python en la cual vamos a probar la siguiente línea de programación de Spark:
sc.parallelize([1,2,3,4]).map(lambda x: x*x).collect()
Como puede verse en la imagen Spark funciona correctamente calculando los cuadrados de los números de la lista.

Prueba PySpark
Utilizando Spark en Jupyter Notebook
Hay dos formas de hacer funcionar PySpark en Jupyter notebook.
Opcion1: Configurar el controlador de PySpark para usar Jupyter Notebook. Al ejecutar pyspark, se abrirá automáticamente un Jupyter Notebook.
Opcion2: Cargar un Jupyter Notebook y luego cargar PySpark usando el paquete findSpark. Esta segunda alternativa más generalizada para utilizar PySpark en un notebook de Jupyter requiere instalarlo en Anaconda o en Python (usando pip) mediante el siguiente comando:
conda install -c conda-forge findspark
Una vez instalado este paquete podemos utilizar findspark para cargar PySpark como puede verse en el siguiente ejemplo.

PruebaFidSpark
6 Comentarios
Federico · 27/11/2018 en 23:12
He leído todo el post y la verdad que hoy día con docker no se a quien se le puede ocurrir instalar un spark suelto en un windows.
Jose Mariano Alvarez · 29/11/2018 en 12:21
Es verdad que es infinitamente más fácil usar Docker pero existen consideraciones respecto del aprendizaje relacionados a la interacción de los componentes base de Spark que se estaría perdiendo si usa una imagen de Docker.
La idea del post es desmitificar y demostrar que armar una máquina para aprender DataScience en Windows solo usando los elementos mínimos es una tontería tal como explica el post.
María José · 11/06/2019 en 14:46
Gracias José. Yo me estoy iniciando en entornos Big Data y me está siendo de mucha utilidad tu blog. Saludos.
Samuel Saldaña · 19/05/2020 en 16:44
Muy buen post, respuesta… existen trabajos puntuales, temporales con Spark, incluso asignaciones para los que hemos estudiado un máster y que te meten esta asignación que luego se esfuma a como vino… que requieren más cuando se trata de una acción para desmitificar.
David · 17/07/2020 en 17:08
No se que pasa e intentado por mil maneras y no me sale, “” que eso no se reconoce como un comando interno o externo y pyspark dice igual que no se reconoce. ayuda. +593995186636
Jose Mariano Alvarez · 20/07/2020 en 00:00
El secreto para que funcione se encuentra en que la linea de comandos debe instanciar el entorno de anaconda adecuado y este entorno tener todos los componentes correctos instalados.
El acceso directo con el contenido “%comspec% /k “” C:\Spark\ SparkCmd.bat “”” es fundamental ya que instancia todos lo que precisa si has instalado todo en el lugar adecuado.
Si no usas las mismas versiones del artículo debes cambiar las versiones y verificar que son compatibles ya que desde que escibí el artículo han aparecido nuevas versiones.