PySpark - StorageLevel

StorageLevel décide de la manière dont RDD doit être stocké. Dans Apache Spark, StorageLevel décide si RDD doit être stocké dans la mémoire ou doit-il être stocké sur le disque, ou les deux. Il décide également s'il faut sérialiser RDD et s'il faut répliquer les partitions RDD.

Le bloc de code suivant a la définition de classe d'un StorageLevel -

class pyspark.StorageLevel(useDisk, useMemory, useOffHeap, deserialized, replication = 1)

Maintenant, pour décider du stockage de RDD, il existe différents niveaux de stockage, qui sont donnés ci-dessous -

  • DISK_ONLY = StorageLevel (Vrai, Faux, Faux, Faux, 1)

  • DISK_ONLY_2 = StorageLevel (Vrai, Faux, Faux, Faux, 2)

  • MEMORY_AND_DISK = StorageLevel (Vrai, Vrai, Faux, Faux, 1)

  • MEMORY_AND_DISK_2 = StorageLevel (Vrai, Vrai, Faux, Faux, 2)

  • MEMORY_AND_DISK_SER = StorageLevel (Vrai, Vrai, Faux, Faux, 1)

  • MEMORY_AND_DISK_SER_2 = StorageLevel (Vrai, Vrai, Faux, Faux, 2)

  • MEMORY_ONLY = StorageLevel (False, True, False, False, 1)

  • MEMORY_ONLY_2 = StorageLevel (False, True, False, False, 2)

  • MEMORY_ONLY_SER = StorageLevel (False, True, False, False, 1)

  • MEMORY_ONLY_SER_2 = StorageLevel (False, True, False, False, 2)

  • OFF_HEAP = StorageLevel (Vrai, Vrai, Vrai, Faux, 1)

Prenons l'exemple suivant de StorageLevel, où nous utilisons le niveau de stockage MEMORY_AND_DISK_2, ce qui signifie que les partitions RDD auront une réplication de 2.

------------------------------------storagelevel.py-------------------------------------
from pyspark import SparkContext
import pyspark
sc = SparkContext (
   "local", 
   "storagelevel app"
)
rdd1 = sc.parallelize([1,2])
rdd1.persist( pyspark.StorageLevel.MEMORY_AND_DISK_2 )
rdd1.getStorageLevel()
print(rdd1.getStorageLevel())
------------------------------------storagelevel.py-------------------------------------

Command - La commande est la suivante -

$SPARK_HOME/bin/spark-submit storagelevel.py

Output - La sortie de la commande ci-dessus est donnée ci-dessous -

Disk Memory Serialized 2x Replicated