2017-01-31 8 views
2

私は "n"を作成しようとしていますdataframesのデータに基づいています。私はcolumnの整数値をdataframeにチェックし、列には "n" dataframesIntegersと多く作成するためにSQL文をループしています。Sparkのリストにデータフレームを追加

は、これは私のコードです:私は作成する必要が

val maxvalue = spark.sql("SELECT MAX(column4) as maxval FROM mydata").collect()(0).getInt(0) 
for(i <- 0 to maxvalue){ 
     var query = "SELECT column1,colum2,colum3 FROM mydata WHERE column4 = "+ i 
     val newdataframe = spark.sql(query) 
     //add dataframe to List 

} 

「n」はdataframesが、私はループの前にList型を宣言し、ための内側に移入する方法がわかりません。

既存dataframeデータタイプ:

// +------------+------------+------------+------------+ 
// |  column1|  column2|  column3|  column4| 
// +------------+------------+------------+------------+ 
// |  String|  Double|   Int|   Int| 
// +------------+------------+------------+------------+ 

新しいdataframesデータタイプ:

// +------------+------------+------------+ 
// |  column1|  column2|  column3|  
// +------------+------------+------------+ 
// |  String|  Double|   Int| 
// +------------+------------+------------+ 
+1

例のデータを追加してください。コードは再現できません。 – mtoto

+0

データフレームデータタイプ – eifersucht

答えて

7

あなたが変更可能なリストを作成し、それを移入することができます

val dfs = mutable.ArrayBuffer[DataFrame]() 
for(i <- 0 to maxvalue){ 
    val query = "SELECT column1,colum2,colum3 FROM mydata WHERE column4 = "+ i 
    val newdataframe = spark.sql(query) 
    dfs += newdataframe 
} 

しかし、より良いですアプローチ(変更可能なデータ構造を使用しない)はにマップ整数のリストをDataFramesのリストに追加します。

val dfs: Seq[DataFrame] = (0 to maxvalue).map { i => 
    spark.sql("SELECT column1,colum2,colum3 FROM mydata WHERE column4 = " + i) 
} 
+0

を追加しました。これは魅力的に機能します!どうもありがとうございました。私は2番目のaproachを使用しました。より良いもの。 ;) – eifersucht

関連する問題