web-dev-qa-db-fra.com

AttributeError: l'objet 'SparkContext' n'a pas d'attribut 'createDataFrame' à l'aide de Spark 1.6

Les questions précédentes concernant cette erreur ont des réponses disant que tout ce que vous avez à faire est de mettre à jour votre version de Spark. Je viens de supprimer ma version précédente de Spark et d'installer Spark 1.6.3 construit pour Hadoop 2.6.0.

J'ai essayé ceci:

s_df = sc.createDataFrame(pandas_df)

Et j'ai eu cette erreur:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-4e8b3fc80a02> in <module>()
      1 #creating a spark dataframe from the pandas dataframe
----> 2 s_df = sc.createDataFrame(pandas_df)

AttributeError: 'SparkContext' object has no attribute 'createDataFrame'

Quelqu'un sait-il pourquoi? J'ai essayé de supprimer et de réinstaller la même version 1.6 mais cela ne fonctionnait pas pour moi.

Voici les variables d'environnement avec lesquelles je m'embarrassais pour que mon pyspark fonctionne correctement:

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
export PATH

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

# added by Anaconda installer
export PATH="/Users/pr/anaconda:$PATH"

# path to Java_HOME
export Java_HOME=$(/usr/libexec/Java_home)

#Spark
export SPARK_HOME="/Users/pr/spark" #version 1.6
export PATH=$PATH:$SPARK_HOME/bin
export PYSPARK_SUBMIT_ARGS="--master local[2]"
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.9-src.Zip:$PYTHONPATH
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

Ai-je peut-être besoin d'installer Hadoop séparément? J'ai sauté cette étape parce que je n'en avais pas besoin pour le code que je courais.

5
pr338

SparkContext n'a pas, SQLContext a:

from pyspark.sql import SQLContext

sqlContext = SQLContext(sc)
sqlContext.createDataFrame(pandas_df)
15
user6022341

Si vous voyiez this dans son document, vous utiliseriez SparkSession. 

from pyspark.sql import SparkSession
sess = SparkSession(sc)
sess.createDataFrame(pandas_df/rdd, schema)
0
lerner