Verwenden Sie Spark_csv in Jupyter und verwenden Sie Python
-
16-10-2019 - |
Frage
Mein ultimatives Ziel ist es, Jupyter zusammen mit Python für die Datenanalyse mit Spark zu verwenden. Die aktuelle Hürde, mit der ich gegenübersteht, lädt das Äußere spark_csv
Bibliothek. Ich verwende Mac OS und Anaconda als Python -Verteilung.
Insbesondere Folgendes:
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()
Wenn er aus Jupyter -Ausbeuten aufgerufen wird:
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
Hier sind weitere Details:
Funken mit Jupyter zusammenstellen
Ich habe es geschafft, Spark/PySpark in Jupyter/Ipython (mit Python 3.x) einzurichten.
System Anfangseinstellung
Auf meinem OS XI installierte Python mit Anaconda. Die Standardversion von Python, die ich derzeit installiert habe, ist 3.4.4 (Anaconda 2.4.0). Beachten Sie, dass ich auch auch die 2.x -Version von Python installiert habe conda create -n python2 python=2.7
.
Funken installieren
Dies ist eigentlich der einfachste Schritt; Laden Sie die neuesten Binärdateien herunter in ~/Applications
oder ein anderes Verzeichnis Ihrer Wahl. Als nächstes Untar das Archiv tar -xzf spark-X.Y.Z-bin-hadoopX.Y.tgz
. Für einen einfachen Zugriff auf Spark Erstellen Sie einen symbolischen Link zum Funken:
ln -s ~/Applications/spark-X.Y.Z-bin-hadoopX.Y ~/Applications/spark
Fügen Sie zuletzt den symbolischen Link zum Funken zum Pfad hinzu:
export SPARK_HOME=~/Applications/spark
export PATH=$SPARK_HOME/bin:$PATH
Sie können jetzt Spark/Pyspark lokal ausführen: Einfach aufrufen spark-shell
oder pyspark
.
Jupyter einstellen
Um Spark aus einem Jupyter -Notizbuch aus zu verwenden, bereiten Sie Folgendes an zu PYTHONPATH
:
export PYTHONPATH=$SPARKHOME/python/lib/py4j-0.8.2.1-src.zip:$SPARKHOME/python/:$PYTHONPATH
Weitere Details finden Sie hier.
Lösung
Unter der Annahme, dass der Rest Ihrer Konfiguration korrekt ist spark-csv
Jar für Ihr Programm zur Verfügung. Es gibt einige Möglichkeiten, wie Sie dies erreichen können:
Laden Sie die erforderlichen Gläser manuell herunter, einschließlich
spark-csv
und CSV -Parser (zum Beispielorg.apache.commons.commons-csv
) und leg sie irgendwo auf dieCLASSPATH
.Verwendung
--packages
Option (Verwenden Sie die Scala-Version, mit der Funken erstellt wurden. Vorgefertigte Versionen verwenden 2.10):Verwendung
PYSPARK_SUBMIT_ARGS
Umgebungsvariable:export PACKAGES="com.databricks:spark-csv_2.11:1.3.0" export PYSPARK_SUBMIT_ARGS="--packages ${PACKAGES} pyspark-shell"
Hinzufügen von Gradle -String zu
spark.jars.packages
inconf/spark-defaults.conf
:spark.jars.packages com.databricks:spark-csv_2.11:1.3.0
Andere Tipps
Verwenden Sie die folgende Prozedur auf Ihrem Mac.
- vi to ~/.bash_profile (~/.zshrc Wenn Sie in diesem Zug sind)
- Fügen Sie den folgenden Eintrag ein (Geben Sie unbedingt die gewünschte Version von Spark-CSV an)-
export PYSPARK_SUBMIT_ARGS="--packages com.databricks:spark-csv_2.11:1.3.0 $PYSPARK_SUBMIT_ARGS"
Führen Sie von dort aus "Ipython Notebook" und testen Sie mit so etwas-
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