Pregunta

Mi objetivo final es usar Jupyter junto con Python para el análisis de datos utilizando Spark. El obstáculo actual que enfrento está cargando el externo spark_csv biblioteca. Estoy usando Mac OS y Anaconda como la distribución de Python.

En particular, lo siguiente:

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()

Cuando se invoca desde Jupyter rendimiento:

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

Aquí hay más detalles:

Establecer chispa junto con jupyter

Me las arreglé para configurar Spark/Pyspark en Jupyter/Ipython (usando Python 3.x).

Configuración inicial del sistema

En mi Python instalado OS Xi usando Anaconda. La versión predeterminada de Python que he instalado actualmente es 3.4.4 (Anaconda 2.4.0). Tenga en cuenta que también he instalado una versión 2.x de Python usando conda create -n python2 python=2.7.

Instalación de chispa

Este es en realidad el paso más simple; Descargue los últimos binarios en ~/Applications o algún otro directorio de su elección. A continuación, desgaste del archivo tar -xzf spark-X.Y.Z-bin-hadoopX.Y.tgz. Para facilitar el acceso a Spark, cree un enlace simbólico a la chispa:

ln -s ~/Applications/spark-X.Y.Z-bin-hadoopX.Y ~/Applications/spark

Por último, agregue el enlace simbólico Spark a la ruta:

export SPARK_HOME=~/Applications/spark
export PATH=$SPARK_HOME/bin:$PATH

Ahora puede ejecutar Spark/Pyspark localmente: simplemente invocar spark-shell o pyspark.

Configuración de Jupyter

Para usar Spark desde dentro de un cuaderno de Jupyter, prepare lo siguiente para PYTHONPATH:

export PYTHONPATH=$SPARKHOME/python/lib/py4j-0.8.2.1-src.zip:$SPARKHOME/python/:$PYTHONPATH

Se pueden encontrar más detalles aquí.

¿Fue útil?

Solución

Asumir que el resto de su configuración es correcto, todo lo que tiene que hacer es hacer spark-csv Jar disponible para su programa. Hay algunas maneras en que puedes lograr esto:

  • Descargue manualmente los frascos requeridos que incluyen spark-csv y analizador CSV (por ejemplo org.apache.commons.commons-csv) y póngalos en algún lugar del CLASSPATH.

  • usando --packages Opción (use la versión Scala que se ha utilizado para construir Spark. Las versiones previas a la construcción usan 2.10):

    • usando PYSPARK_SUBMIT_ARGS Variable ambiental:

      export PACKAGES="com.databricks:spark-csv_2.11:1.3.0"
      export PYSPARK_SUBMIT_ARGS="--packages ${PACKAGES} pyspark-shell"
      
    • Agregar cadena de Gradle a spark.jars.packages en conf/spark-defaults.conf:

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

Otros consejos

Use el siguiente procedimiento en su Mac-

  1. vi a ~/.bash_profile (~/.zshrc si estás en ese tren)
  2. Pegue la siguiente entrada (asegúrese de especificar su versión deseada de Spark-CSV)-

export PYSPARK_SUBMIT_ARGS="--packages com.databricks:spark-csv_2.11:1.3.0 $PYSPARK_SUBMIT_ARGS"

A partir de ahí, ejecute 'Notebook Ipython' y pruebe con algo como esto,

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
Licenciado bajo: CC-BY-SA con atribución
scroll top