Zeppelin: Scala Dataframe для python

Если у меня есть параграф Scala с DataFrame, я могу поделиться и использовать его с python. (Как я понимаю, pyspark использует py4j )

Я попробовал это:

Пункт Scala:

x.printSchema z.put("xtable", x ) 

Python:

 %pyspark import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns the_data = z.get("xtable") print the_data sns.set() g = sns.PairGrid(data=the_data, x_vars=dependent_var, y_vars=sensor_measure_columns_names + operational_settings_columns_names, hue="UnitNumber", size=3, aspect=2.5) g = g.map(plt.plot, alpha=0.5) g = g.set(xlim=(300,0)) g = g.add_legend() 

Ошибка :

 Traceback (most recent call last): File "/tmp/zeppelin_pyspark.py", line 222, in <module> eval(compiledCode) File "<string>", line 15, in <module> File "/usr/local/lib/python2.7/dist-packages/seaborn/axisgrid.py", line 1223, in __init__ hue_names = utils.categorical_order(data[hue], hue_order) TypeError: 'JavaObject' object has no attribute '__getitem__' 

Решение:

 %pyspark import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import StringIO def show(p): img = StringIO.StringIO() p.savefig(img, format='svg') img.seek(0) print "%html <div style='width:600px'>" + img.buf + "</div>" df = sqlContext.table("fd").select() df.printSchema pdf = df.toPandas() g = sns.pairplot(data=pdf, x_vars=["setting1","setting2"], y_vars=["s4", "s3", "s9", "s8", "s13", "s6"], hue="id", aspect=2) show(g) 

кластерная визуализация

    One Solution collect form web for “Zeppelin: Scala Dataframe для python”

    Вы можете зарегистрировать DataFrame в качестве временной таблицы в Scala:

     // registerTempTable in Spark 1.x df.createTempView("df") 

    и прочитайте его в Python с помощью SQLContext.table :

     df = sqlContext.table("df") 

    Если вы действительно хотите использовать put / get вас будет сборка Python DataFrame с нуля:

     z.put("df", df: org.apache.spark.sql.DataFrame) 
     from pyspark.sql import DataFrame df = DataFrame(z.get("df"), sqlContext) 

    Для построения графика с помощью matplotlib вы должны преобразовать DataFrame в локальный объект Python с помощью либо collect либо toPandas :

     pdf = df.toPandas() 

    Обратите внимание, что он доставит данные драйверу.

    См. Также перемещение Spark DataFrame от Python до Scala whithn Zeppelin

     
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.