DataFrame'e sahip bir Scala paragrafım varsa, bunu python ile paylaşabilir ve kullanabilir miyim?Zeppelin: Python'a Scala Dataframe
Scala paragraf:
x.printSchema
z.put("xtable", x)
Python paragraf:
%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()
Hata:
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__'
Bu çalıştı (Anladığım kadarıyla pyspark py4j kullanır)Çözüm: SQLContext.table
ile Python
// registerTempTable in Spark 1.x
df.createTempView("df")
ve okumak: Sen Scala geçici tablo olarak DataFrame
kayıt olabilirsiniz
%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)
Spark 1.6.0 veya önceki kullanarak, açıkça kullandığınız her bir dil için yeni SqlContext ilan etmek gerek bakın. Infact, [SPARK-13180] (https://issues.apache.org/jira/browse/SPARK-13180) hatası nedeniyle, başlangıçta Zeppelin tarafından oluşturulan HiveContext çalışmıyor. Bu durumda DataFrame'i Python ve Scala'da paylaşmanın tek yolu, Dataframe referansını Scala'dan Zeppelin bağlamına koymak ve Python'dan 'DataFrame (z.get (" df "), sqlContext)' ile kurtarmaktır. –
herhangi bir geçici oluşturarak '% sql'de erişebilirsiniz – Junaid