Scala: So erhalten Sie einen Zeilenbereich in einem Datenrahmen
Ich habe einDataFrame
Erstellt von runningsqlContext.read
einer Parkettdatei.
DasDataFrame
besteht aus 300 M Zeilen. Ich muss diese Zeilen als Eingabe für eine andere Funktion verwenden, möchte sie jedoch in kleineren Stapeln ausführen, um OOM-Fehler zu vermeiden.
erzeit verwende ichdf.head(1000000)
, um die ersten 1M Zeilen zu lesen, aber ich kann keine Möglichkeit finden, die nachfolgenden Zeilen zu lesen. Ich habe es versuchtdf.collect()
, aber es gibt mir einen Java-OOM-Fehler.
Ich möchte diesen Datenrahmen durchlaufen. Ich habe versucht, mit der withColumn () -API eine weitere Spalte hinzuzufügen, um einen eindeutigen Satz von Werten zu generieren, über den wiederholt werden soll, aber keine der vorhandenen Spalten im Datenrahmen weist ausschließlich eindeutige Werte auf.
Zum Beispiel habe ich versucht, valdf = df1.withColumn("newColumn", df1("col") + 1)
ebenso gut wieval df = df1.withColumn("newColumn",lit(i+=1))
, beide geben keine sequentielle Menge von Werten zurück.
Jeder andere Weg, um die ersten n Zeilen eines Datenrahmens und dann die nächsten n Zeilen abzurufen, funktioniert wie eine Bereichsfunktion vonSqlContext
?