J'utilise Spark 1.3.0 avec python api. Lors de la transformation d'énormes trames de données, je cache de nombreux DF pour une exécution plus rapide;
df1.cache()
df2.cache()
Une fois que l'utilisation de certaines trames de données est terminée et n'est plus nécessaire, comment puis-je supprimer DF de la mémoire (ou le mettre en cache ??)?
Par exemple, df1
est utilisé tout au long du code tandis que df2
est utilisé pour quelques transformations et après cela, il n'est plus nécessaire. Je veux abandonner avec force df2
pour libérer plus d'espace mémoire.
faites juste ce qui suit:
df1.unpersist()
df2.unpersist()
Spark surveille automatiquement l'utilisation du cache sur chaque nœud et supprime les anciennes partitions de données de la manière la moins récemment utilisée (LRU). Si vous souhaitez supprimer manuellement un RDD au lieu d'attendre qu'il tombe du cache, utilisez la méthode RDD.unpersist ().
Si la trame de données enregistrée en tant que table pour les opérations SQL, comme
df.createGlobalTempView(tableName) // or some other way as per spark verision
alors le cache peut être supprimé avec les commandes suivantes, hors cours spark le fait aussi automatiquement
Ici spark
est un objet de SparkSession
Supprimer une table/df spécifique du cache
spark.catalog.uncacheTable(tableName)
Supprimer toutes les tables/dfs du cache
spark.catalog.clearCache()
Supprimer une table/df spécifique du cache
sqlContext.uncacheTable(tableName)
Supprimer toutes les tables/dfs du cache
sqlContext.clearCache()