Privacy Policy

Installare PySpark su Windows [4min di Lettura]

Ad Aprile avevo iniziato a studiare PySpark terminando un corso introduttivo su DataCamp.com

Come sempre su DataCamp il lavoro è semplificato. Infatti il focus è verticale su come utilizzare questo Framework senza dover installare tutto il pacchetto sul proprio computer.

Credo che questa semplificazione sia un bene ed un male allo stesso tempo.

E’ un bene perchè si ha la possibilità di capire subito come funziona sul piano operativo. Dall’altro lato è un male per due ragioni sia perchè se poi si ci vuole allenare per conto proprio è necessario installare il framework sul proprio pc, sia perchè nella realtà è necessario risolvere tutti i seccanti problemi di set up.

Io purtroppo reduce da Ingegneria Civile e DataScientist Autodidatta ho dovuto compiere qualche sforzo in più per il set up di Spark e PySpark, così ho deciso di farci un tutorial in italiano.

Sto dando per scontato che abbiate già installato sul vostro pc Anaconda per Python, diversamente potete scaricare tutto il pacchetto qui.

0 Glossario

  • Hadoop, framework open source per il calcolo distribuito e parallelizzato. Punto chiave di Hadoop è l’algoritmo di Map Reduce
  • Apache Spark, è un framework per processare una grosse moli di dati. Il punto di forza di Spark è il processamento dei dati in real time e la velocità di processamento di circa 100 volte superiore rispetto ad Hadoop Mapreduce. (Roberto, giustamente, con questo articolo sollevava delle perplessità perchè sono stati riscontrati in determinate circostanze dei fenomeni di data leakage)
  • Pyspark, è un API che permette di interfacciarsi con Spark attraverso il linguaggio Python

1 Installate JAVA

E’ necessario avere una versione aggiornata di java. Andate sul cmd e digitate:

java -version

Se la vostra versione di Java è aggiornata vi uscirà un messaggio del genere

java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) Client VM (build 25.171-b11, mixed mode)

Se non è aggiornata dovrete scaricare (clicca qui) la nuova versione adatta al vostro sistema operativo andando sul sito di Oracle ed accettando le condizioni della licenza.

Installare Pyspark utilizzandolo su windows con jupytetr-notebook

Successivamente dovrete aggiungere il percorso di installazione al PATH (Variabili di Sistema), nel mio caso specifico è stato:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath_target_861217902

Ma solitamente di Default il percorso file è questo:

C:\Program Files\Java\jdk1.8.0_201

Per aggiungere il percorso del file alle variabili di sistema PATH quello che dovete fare sono i seguenti step:

  1. Pannello di Controllo
  2. Sistema e sicurezza
  3. Sistema
  4. Impostazioni del sistema avanzate
  5. Variabili d’ambiente
  6. Nuova…

2 Installare Apache Spark

Seguite questi passi:

  1. Andate nella sezione download
  2. Alla sezione Choose a Spark release scegliete l’ultima più stabile (2.4.3 ad oggi 02 Giugno 2019)
  3. Alla sezione Choose a package type, selezionate la versione che include Hadoop come ad esempio “Pre-built for Hadoop 2.7 and later.
  4. Cliccate sul link subito dopo spark-2.4.3-bin-hadoop2.7.tgz
  5. Non dovete eseguire nessun Installer. Potete estrarre i file dal file zip (personalmente uso Winrar) dove meglio credete, poi sposteremo i file estratti nei successivi punti. Estraete i file in una cartella chiamata “spark“. Io ho estratto i file in questo percorso
    C:\spark
  6. Controllate che il persorso file contenente Spark non abbia spazi

Ci siamo quasi. All’interno della cartella “spark” troverete un’altra cartella con una nomenclatura del tipo spark-2.4.3-bin-hadoop2.7. Per semplicità rinominatela “SPARK_HOME

Dovete verificare se l’installazione è terminata a buon fine, quindi:

  1. Aprite il prompt dei comandi, andate C:\spark\SPARK_HOME\bin e digitate:
C:\spark\SPARK_HOME\bin> pyspark

Dovrebbe uscirvi una schermata simile a questa, più delle altre informazioni con un messaggio di errore.

Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bi
t (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
19/06/02 12:57:10 WARN NativeCodeLoader: Unable to load native-hadoop library fo
r your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLeve
l(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.3
      /_/

Using Python version 3.6.4 (default, Jan 16 2018 10:22:32)
SparkSession available as 'spark'.

Il messaggio di errore:

ERROR Shell: Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries

Digitando exit() uscite dalla shell di PySpark.

3 Installare wintuils.exe

  1. Ora è necessario scaricare winutils.exe e configurare Spark affinchè tutto funzioni.Create una cartella hadoop\bin all’interno del nostra cartella SPARK_HOME (che avevamo creato prima).
  2. Scaricate il exe per la vostra versione di hadoop sulla base della versione di Spark che avete installato. Sulla base di questo tutorial scaricate la versione 2.7.1 qui e copiate il contenuto nella cartella hadoop\bin
  3. All’interno di Windows create una variabile di sistema chiamata SPARK_HOME(vedi lo screenshoot di prima), la variabile punterà al percorso omonimo (es. C:\spark\SPARK_HOME). Nota che per fare questo sul tuo pc personale probabilmente non avrai problemi, in altri ambienti è necesario avere i privilegi di amministratore e per questo sarà necessario contattare il dipartimento IT della tua azienda o chi ne è responsabile.
  4. (Ci siamo quasi) All’interno di Windows create un’altra variabile di sistema chiamata HADOOP_HOME che punterà alla cartella hadoop all’interno di SPARK_HOME( es. C:\spark\SPARK_HOME\hadoop)
Spark come variabile di Sistema

Un consiglio per non uscire pazzi con i riferimenti ed eventuali aggiornamenti delle cartelle è fare in modo che il percorso di hadoop sia relativo alla posizione della cartella SPARK_HOME com segue%SPARK_HOME%\hadoop. In questo modo se aggiornate la cartella SPARK_HOME non dovrebbero sorgere problemi/conflitti.

4 Usare Spark da Jupyter

Andate sul CMD o Powershell, e installate PySpark con il seguente comando:

python -m pip install pyspark
Installare pyspark con pip install

Se dovessero esserci problemi potete installare findspark nel modo analogo a prima:

python -m pip install findspark

Aprendo un nuovo file Jupyter, come nello screenshot sottostante, caricate il package di pyspark, non dovrebbero comparirvi messaggi di errore (al contrario di quanto succedeva a mequalche mese fa)

Se non compare nessun messaggio di errore: Complimenti avete installato Spark e PySpark correttamente!

Grazie per aver letto l’articolo, se lo hai trovato utile condividilo su Twitter e Linkedin.

Le occasioni nascono dalle piccole cose e grazie ad un un like puoi fare tantissimo. 
Se c’è qualche errore o miglioramento scrivimi pure.

Un abbraccione

Andrea

Lascia un commento