2016-05-16 22 views
3

私はZeppelinのPythonの段落でspark DataFrameを作成しました。Spark DataFrameをPythonからZeppelinのScalaに移動

sqlCtx = SQLContext(sc) 
spDf = sqlCtx.createDataFrame(df) 

df私が何をしたいパンダのデータフレーム

print(type(df)) 
<class 'pandas.core.frame.DataFrame'> 

は、他のScalaの段落に1つのPythonの段落からspDfを移動されます。それはz.putを使用して行う合理的な方法を見ている。

z.put("spDf", spDf) 

と私は、このエラーました:

AttributeError: 'DataFrame' object has no attribute '_get_object_id' 

エラーを修正するための任意の提案を?またはspDfを移動するための提案はありますか?

答えて

5

あなたはput内部JavaオブジェクトではないPythonラッパー次のことができます。その後、

%pyspark 

df = sc.parallelize([(1, "foo"), (2, "bar")]).toDF(["k", "v"]) 
z.put("df", df._jdf) 

、あなたは正しいタイプを使用してください:

val df = z.get("df").asInstanceOf[org.apache.spark.sql.DataFrame] 
// df: org.apache.spark.sql.DataFrame = [k: bigint, v: string] 

をしかし、一時テーブルを登録した方がよい:

%pyspark 

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

とそれを読むにはSQLContext.tableを使用してください:

// sqlContext.table in Spark 1.x 
val df = spark.table("df") 
df: org.apache.spark.sql.DataFrame = [k: bigint, v: string] 

反対方向に変換するにはZeppelin: Scala Dataframe to python

+1

感謝を参照してください!それは完全に動作します。 – MTT

関連する問題