2016-04-23 5 views
1

私はdataListというScalaの2次元リストを持っています。それをPandas DataFrameに変換したいと思います。ScalaのリストをPythonのリストまたはdataFrameに変換する

val dataList: List[List[Int]] = tempData.toList 

私はdataListを印刷したい場合は、すべてが正常に動作し、Pythonでオブジェクトの型が

<class 'py4j.java_gateway.JavaObject'> 

私の知る限りでは、私はPythonでのコレクションへのアクセス権を持っているpy4jを使用する必要がありますされます。しかし、私はdataListの各要素にアクセスするためにネストされたループを使用してからDataFrameを入れなければならないと思います。 DataFrameまたはpythonのリストに直接変換するスマートな方法はありますか?DataFrame

私はツェッペリン0.5.5に

+0

私はツェッペリンを使用しているので、はい! – MTT

+0

その後、質問のタグに 'Apache-Spark'を追加してください。この質問は、将来他の人に役立つかもしれません。 –

+0

あなたは正しいです!完了しました。 – MTT

答えて

2

を使用しています(コンバータを使用して)最初のJavaリストにあなたのScalaのリストを変換する場合、PySparkは自動Pythonのリストに変換することができるはずです。 Scalaのセルで

:Python用の別々のセルに

import scala.collection.JavaConverters._ 

// Sample of what I assume your "dataList" looks like 
val dataList: List[List[Int]] = List(List(1,2,3),List(4,5,6)) 
// Convert to java.util.List 
val javaDataList: java.util.List[java.util.List[Int]] = 
    dataList.map(_.asJava).asJava 
// Place in Zeppelin context for %pyspark cell access 
z.put("dataList", javaDataList) 

%pyspark 
# Read from Zeppelin context 
dataList = z.get("dataList") 
print dataList 

あなたはまた、おそらくあなたのScalaのリストが手オーバーに、最初の(スパーク)DATAFRAMEに変換することができPythonを呼び出し、 "toPandas()"を呼び出してPandas DataFrameを取得します。私はそれをお勧めしません。なぜなら、データを並列化してから、もう一度(つまり、toPandas()を呼び出して)それを逆平行化するだけだからです。

関連する問題