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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage