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.
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.