web-dev-qa-db-fra.com

Drop spark dataframe from cache

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.

22
ankit patel

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

39
Alexander

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

Étincelle> = 2.x

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()
    

Étincelle <= 1,6.x

  • Supprimer une table/df spécifique du cache

    sqlContext.uncacheTable(tableName)
    
  • Supprimer toutes les tables/dfs du cache

    sqlContext.clearCache()
    
18
mrsrinivas