web-dev-qa-db-de.com

funkenzugriff erste n Zeilen - nimm vs Limit

Ich möchte auf die ersten 100 Zeilen eines Funken-Datenrahmens zugreifen und das Ergebnis in eine CSV-Datei zurückschreiben.

Warum ist take(100) im Grunde sofort, während 

df.limit(100)
      .repartition(1)
      .write
      .mode(SaveMode.Overwrite)
      .option("header", true)
      .option("delimiter", ";")
      .csv("myPath")

dauert für immer . Ich möchte nicht die ersten 100 Datensätze pro Partition erhalten, sondern nur 100 Datensätze.

7
Georg Heiler

Dies liegt daran, dass das Prädikat-Pushdown derzeit in Spark nicht unterstützt wird, siehe diese sehr gute Antwort

Eigentlich sollte take (n) auch sehr lange dauern. Ich habe es jedoch gerade getestet und erhalte die gleichen Ergebnisse wie Sie - die Aufnahme ist unabhängig von der Datenbankgröße fast augenblicklich, während das Limit viel Zeit in Anspruch nimmt.

4
Thomas