2017-01-31 2 views
2

Ich versuche, "n" dataframes basierend auf den Daten von einem zu erstellen. Ich überprüfe den Integer-Wert von column in dataframe und Schleife den SQL-Satz für die Erstellung von "n" dataframes so viele wie Integers in der Spalte.Hinzufügen von Datenrahmen zur Liste in Spark

Dies ist mein Code:

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 

} 

ich erstellen müssen „n“ dataframes aber ich weiß nicht, wie die vor Schleife List Art und innerhalb des für bevölkern zu erklären.

Die bestehende dataframe Datentyp:

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

Die neue dataframes Datentyp:

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

bitte Beispiel Daten, wie der jetzt Ihr Code hinzufügen, ist nicht reproduzierbar. – mtoto

+0

Ich habe den Dataframe-Datentyp hinzugefügt – eifersucht

Antwort

7

Sie können eine veränderbare Liste erstellen und füllen:

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 
} 

Aber eine bessere Ansatz (ohne veränderbare Datenstruktur) ist Karte die Liste von ganzen Zahlen in eine Liste von Datenrahmen:

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

Es funktioniert wie ein Charme! Vielen Dank. Ich habe den zweiten Ansatz benutzt. Der Bessere. ;) – eifersucht

Verwandte Themen