web-dev-qa-db-fra.com

conversion pandas dataframes en spark dataframe in zeppelin

Je suis nouveau sur Zeppelin. J'ai un cas d'utilisation dans lequel j'ai un pandas dataframe.J'ai besoin de visualiser les collections en utilisant le graphique intégré de zeppelin Je n'ai pas d'approche claire ici. MA compréhension est avec zeppelin, nous pouvons visualiser les données si c'est un format RDD. Donc, je voulais convertir en pandas dataframe en spark dataframe, puis faire quelques requêtes (en utilisant sql), Je vais visualiser. Pour commencer, j'ai essayé de convertir pandas dataframe en spark's mais j'ai échoué

%pyspark
import pandas as pd
from pyspark.sql import SQLContext
print sc
df = pd.DataFrame([("foo", 1), ("bar", 2)], columns=("k", "v"))
print type(df)
print df
sqlCtx = SQLContext(sc)
sqlCtx.createDataFrame(df).show()

Et j'ai l'erreur ci-dessous

Traceback (most recent call last): File "/tmp/zeppelin_pyspark.py", 
line 162, in <module> eval(compiledCode) File "<string>", 
line 8, in <module> File "/home/bala/Software/spark-1.5.0-bin-hadoop2.6/python/pyspark/sql/context.py", 
line 406, in createDataFrame rdd, schema = self._createFromLocal(data, schema) File "/home/bala/Software/spark-1.5.0-bin-hadoop2.6/python/pyspark/sql/context.py", 
line 322, in _createFromLocal struct = self._inferSchemaFromList(data) File "/home/bala/Software/spark-1.5.0-bin-hadoop2.6/python/pyspark/sql/context.py", 
line 211, in _inferSchemaFromList schema = _infer_schema(first) File "/home/bala/Software/spark-1.5.0-bin-hadoop2.6/python/pyspark/sql/types.py", 
line 829, in _infer_schema raise TypeError("Can not infer schema for type: %s" % type(row)) 
TypeError: Can not infer schema for type: <type 'str'> 

Quelqu'un peut-il m'aider ici? Aussi, corrigez-moi si je me trompe quelque part.

16
Bala

Ce qui suit fonctionne pour moi avec Zeppelin 0.6.0, Spark 1.6.2 et Python 3.5.2:

%pyspark
import pandas as pd
df = pd.DataFrame([("foo", 1), ("bar", 2)], columns=("k", "v"))
z.show(sqlContext.createDataFrame(df))

qui se traduit par:

enter image description here

14
eddies

Je viens de copier et coller votre code dans un cahier et ça marche.

%pyspark
import pandas as pd
from pyspark.sql import SQLContext
print sc
df = pd.DataFrame([("foo", 1), ("bar", 2)], columns=("k", "v"))
print type(df)
print df
sqlCtx = SQLContext(sc)
sqlCtx.createDataFrame(df).show()

<pyspark.context.SparkContext object at 0x10b0a2b10>
<class 'pandas.core.frame.DataFrame'>
     k  v
0  foo  1
1  bar  2
+---+-+
|  k|v|
+---+-+
|foo|1|
|bar|2|
+---+-+

J'utilise cette version: zeppelin-0.5.0-incubating-bin-spark-1.4.0_hadoop-2.3.tgz

7
leleplx

Essayez de définir les variables SPARK_HOME et PYTHONPATH dans bash, puis relancez-le.

    export SPARK_HOME=path to spark
    export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/build:$PYTHONPATH
    export PYTHONPATH=$SPARK_HOME/python/lib/py4j-0.8.2.1-src.Zip:$PYTHONPATH
0
Jay Feng