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 .

È stato utile?

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 esempio org.apache.commons.commons-csv ) e metterli da qualche parte sul CLASSPATH.

  • 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 in conf/spark-defaults.conf:

      spark.jars.packages    com.databricks:spark-csv_2.11:1.3.0
      

Altri suggerimenti

Usare la seguente procedura sul vostro Mac -

  1. VI ~ / .bash_profile (~ / .zshrc se siete su quel treno)
  2. 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top