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.

War es hilfreich?

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 Beispiel org.apache.commons.commons-csv) und leg sie irgendwo auf die CLASSPATH.

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

  1. vi to ~/.bash_profile (~/.zshrc Wenn Sie in diesem Zug sind)
  2. 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top