web-dev-qa-db-fra.com

accès étincelle n premières lignes - prendre vs limite

Je souhaite accéder aux 100 premières lignes d'un cadre de données spark et écrire le résultat dans un fichier CSV.

Pourquoi take(100) est-il essentiellement instantané alors que 

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

prend une éternité ... Je ne veux pas obtenir les 100 premiers enregistrements par partition, mais juste 100 enregistrements.

7
Georg Heiler

En effet, Spark ne prend actuellement pas en charge la répression des prédicats, voir cette très bonne réponse

En fait, prendre (n) devrait également prendre beaucoup de temps. Cependant, je viens de le tester et d'obtenir les mêmes résultats que vous: prendre est presque instantané, quelle que soit la taille de la base de données, alors que la limite prend beaucoup de temps.

4
Thomas