Usa spark_csv all'interno Jupyter e l'utilizzo di Python
-
16-10-2019 - |
Domanda
Il mio obiettivo finale è quello di utilizzare Jupyter insieme a Python per l'analisi dei dati utilizzando Spark. L'attuale volto transenna mi sta caricando la libreria spark_csv
esterna. Sto usando Mac OS e Anaconda come la distribuzione di Python.
In particolare, quanto segue:
from pyspark import SparkContext
sc = SparkContext('local', 'pyspark')
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true').load('file.csv')
df.show()
quando viene richiamato da rendimenti Jupyter:
Py4JJavaError: An error occurred while calling o22.load.
: java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.csv. Please find packages at http://spark-packages.org
Qui ci sono ulteriori dettagli:
Impostazione Spark insieme Jupyter
Sono riuscito a configurare Spark / PySpark in Jupyter / IPython (utilizzando Python 3.x).
impostazione iniziale del sistema
Al mio OS X ho installato Python utilizzando Anaconda. La versione di default di Python che hanno attualmente installato è 3.4.4 (Anaconda 2.4.0). Nota, che anche io ho installato anche 2.x versione di Python usando conda create -n python2 python=2.7
.
Installazione Spark
Questo è in realtà il passo più semplice; scaricare gli ultimi binari in ~/Applications
o qualche altra cartella a vostra scelta. Avanti, decomprimere il tar -xzf spark-X.Y.Z-bin-hadoopX.Y.tgz
archivio.
Per un facile accesso a Spark creare un collegamento simbolico alla Spark:
ln -s ~/Applications/spark-X.Y.Z-bin-hadoopX.Y ~/Applications/spark
Infine, aggiungere il collegamento simbolico Spark al PATH:
export SPARK_HOME=~/Applications/spark
export PATH=$SPARK_HOME/bin:$PATH
È ora possibile eseguire Spark / PySpark a livello locale:. Richiamare semplicemente spark-shell
o pyspark
Impostazione Jupyter
Per poter utilizzare Spark dall'interno di un notebook Jupyter, prepand quanto segue per PYTHONPATH
:
export PYTHONPATH=$SPARKHOME/python/lib/py4j-0.8.2.1-src.zip:$SPARKHOME/python/:$PYTHONPATH
Ulteriori dettagli si possono trovare qui .
Soluzione
Supponendo che il resto della configurazione è corretta tutto ciò che dovete fare è quello di rendere barattolo spark-csv
a disposizione al vostro programma. Ci sono alcuni modi per raggiungere questo obiettivo:
-
vasetti manualmente download richiesto, tra cui
spark-csv
e csv parser (per esempioorg.apache.commons.commons-csv
) e metterli da qualche parte sulCLASSPATH
. -
utilizzando l'opzione
--packages
(versione per uso Scala che è stato usato per costruire Spark versioni pre-costruiti utilizzano 2.10.):-
utilizzando variabile d'ambiente
PYSPARK_SUBMIT_ARGS
:export PACKAGES="com.databricks:spark-csv_2.11:1.3.0" export PYSPARK_SUBMIT_ARGS="--packages ${PACKAGES} pyspark-shell"
-
l'aggiunta di stringa Gradle a
spark.jars.packages
inconf/spark-defaults.conf
:spark.jars.packages com.databricks:spark-csv_2.11:1.3.0
-
Altri suggerimenti
Usare la seguente procedura sul vostro Mac -
- VI ~ / .bash_profile (~ / .zshrc se siete su quel treno)
- Incolla la seguente voce (assicurarsi di specificare la versione desiderata di scintilla csv) -
export PYSPARK_SUBMIT_ARGS="--packages com.databricks:spark-csv_2.11:1.3.0 $PYSPARK_SUBMIT_ARGS"
Da lì, run 'ipython notebook' e prova con qualcosa di simile -
import pyspark as ps
from pyspark.sql import SQLContext
sc = ps.SparkContext()
input_csv = 'file:////PATH_TO_CSV_ON_LOCAL_FILESYSTEM'
df=sqlContext.read.load(input_csv,format='com.databricks.spark.csv', header='true', inferSchema='true')
df.dtypes # Returns the csv's schema breakdown with types